次のコードスニペットがあります。
A.h
include B.h
class A
{
public:
void createB();
B* getB();
private:
B *b;
};
A.cpp
void A::createB()
{
b = new B();
}
B* A::getB()
{
return b;
}
Main.cpp
int main()
{
int n = 3;
A *a_array = new A[n];
for ( int i = 0; i < n; i++ ) {
A *a = new A();
a_array[i] = *a;
}
for ( int i = 0; i < n; i++ ) {
A a = a_array[i];
a.createB();
}
a_array[0].doStuff(); // OK
a_array[0].getB(); // returns NULL
}
Output:
A created
A created
A created
B created
A destroyed
B created
A destroyed
B created
A destroyed
Aオブジェクトはループで破壊されているようですが、ループなしでアクセスできますが、Aのオブジェクトメンバーにアクセスできません。