我创建了两个类,并在其他类中声明了一个类的对象,如下所示,但是我收到一个警告,该类必须声明一个规范赋值运算符并需要一个复制构造函数。
class Base {
public:
int value;
virtual int getData() { retun 0; };
}
class test {
public:
int data;
}
class B : public Base {
test *var;
}
如何修复此警告?
答案 0 :(得分:0)
这是基本的C ++:无论何时将指针放入类中,该类都需要显式的复制构造函数和赋值运算符。
否则, 会在类及其副本全部尝试删除同一对象的情况下结束。或者某些副本指向前一段时间删除的对象。
如果您正在使用对象生命周期和原始指针进行棘手的事情,那么无论如何都要声明复制构造函数 并编写解释正在发生的事情的注释。