下記のようなクラスAがあった場合に、funcBからクラスBのidとクラスAのidの双方にアクセスしたい場合にはどのように記述すれば良いでしょうか
[c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
C++ではメンバー変数はprivateなので
BクラスからAクラスのメンバー変数にアクセスできません。
BクラスからAクラスのメンバー変数にアクセスできません。
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
× メンバー変数はprivateなのでnaohiro19 さんが書きました:C++ではメンバー変数はprivateなので
〇 classのメンバー変数はデフォルトではprivateなので
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
>privateなので
>BクラスからAクラスのメンバー変数にアクセスできません。
今回の場合, BはAの内部クラスだからアクセスできます.
>BクラスからAクラスのメンバー変数にアクセスできません。
今回の場合, BはAの内部クラスだからアクセスできます.
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
#include <iostream>
class A {
class B {
int id;
public:
B() : id(5) {}
void funcB(A *pA) {
std::cout << "A::B::id=" << id << ", A::id=" << pA->id << "\n";
}
};
B b; // B のインスタンス
int id;
public:
A() : id(3) {}
void funcA() {
b.funcB(this); // A のインスタンスへのポインタを渡す
}
};
int main()
{
A a; // A のインスタンス
a.funcA();
}
class B のメンバ変数の id にアクセスする場合は、
this->id の代わりに id と書けますが、
class B のメンバ関数の funcB の中で、
class A のメンバ変数の id にアクセスする場合は、
(A のインスタンス).id または (A のインスタンスへのポインタ)->id
と書くしかないと思います。
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
C++では、入れ子クラス(nest class)ではありますが、内部クラス(inner class)ではありません。
内部クラスではない入れ子クラスは、インスタンスによる結び付きがないので、外側のクラスのインスタンスに対して(暗黙の)参照はできません。
内部クラスではない入れ子クラスは、インスタンスによる結び付きがないので、外側のクラスのインスタンスに対して(暗黙の)参照はできません。
Re: [c++] クラス内クラスのメンバ関数から、外側クラスメンバへのアクセス
Java では内部クラスですから、外側のクラスのインスタンスへの参照を明示的に
渡さなくても、A.this.id でアクセスできますね。
渡さなくても、A.this.id でアクセスできますね。