次のコード スニペットを検討してください。
#include <iostream>
using namespace std;
class X {
public:
class Z {
public:
void f() {
cout << "Z().f()" << endl;
}
};
class Y {
public:
int A;
Y(int x) {
A = x;
}
int c() {
return A;
}
};
public:
Z* z;
// How to free Y instance ?
Y* a(int x) {
Y* y = new Y(x);
return y;
}
public:
X() {
z = new Z();
}
~X() {
delete z;
}
};
int main(void) {
int a;
X* x = new X();
cout << "input :" << endl;
cin >> a;
cout << "result : " << x->a(a)->c() << endl;
x->z->f();
delete x;
return 0;
}
Z オブジェクトは ~X() で簡単に解放できますが、Y オブジェクトを解放する方法に興味がありますか? メモリアドレスを保持する変数を割り当てていないためです。
ところで、このようなものの用語は何ですか? x->a(a)->c()
ありがとうございました。:)