我试图定义一个这样的类:
#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; }
我的问题是为什么编译器关心对象的字段是否实现了可访问的复制构造函数?