-2

我创建了两个类,并在另一个类中声明了一个类的对象,如下所示,但我收到一个警告,该类必须声明一个规范的赋值运算符并且需要一个复制构造函数。

class Base {
public:
    int value;
    virtual int getData() { retun 0; };
}

class test {
public:
    int data;
}

class B : public Base {
    test *var;
}

如何解决此警告?

4

1 回答 1

0

这是基本的 C++:每当您将指针放入类时,该类都需要显式的复制构造函数和赋值运算符。

否则,您最终遇到类及其副本都试图删除同一个对象的情况。或者一些副本指向前一段时间被删除的对象。

如果您正在使用对象生命周期和原始指针做一些棘手的事情,那么无论如何都要声明复制构造函数并编写注释来解释正在发生的事情。

于 2013-02-19T15:38:58.830 回答