私は次のようなクラスを定義しようとしていました:
#include <library/foo.h>
class my_class {
private:
someone_elses foo;
public:
myclass();
~myclass();
//...
};
しかし、コンパイラは失敗しました:「someone_elses型のフィールドfooにはプライベートコピーコンストラクタがあります」。これで、次の方法でこれに対処できることがわかりました。
class my_class {
private:
someone_elses *foo;
//...
};
my_class::my_class() { foo = new someone_elses(); }
my_class::~my_class() { delete foo; }
私の質問は、オブジェクトのフィールドがアクセス可能なコピーコンストラクターを実装するかどうかをコンパイラーが気にするのはなぜですか?