这是我的代码的一部分....
//samlple.h ........
class Manager{
public:
Manager(cmd::Processor *cp);
virtual ~Manager(void);
protected:
cmd::Processor *m_Processor;
};
// samlple.cpp ........
//Default constructor
Manager::Manager(
cmd::Processor *cp
) : m_commandProcessor(cp)
{
g_MgrCommand = new MgrCommand(this);
}
执行此操作后,我收到以下警告:
Sample.cpp(97):Info 1732:类'Manager'的构造函数中的new,它没有赋值运算符........
我是c ++编码的新手...... 你能告诉我如何为我的班级编写复制构造函数和赋值运算符来删除此警告
答案 0 :(得分:0)
您可以声明operator=
成员函数:
Manager& Manager::operator=(const Manager&) {
// ...
return (*this);
}
当然,函数的第一个参数可以是你想要的任何东西。
答案 1 :(得分:0)
您不必实施复制c'tor /赋值。
关键在于,除非您自己实现它们,否则编译器会通过成员副本自动实现它。在您的特定情况下,此自动生成的代码将不正确,因为您将有多个对象指向相同的已分配MgrCommand
。
您应该正确实现c'tor /赋值运算符(可能通过在每个对象中分配单独的MgrCommand
实例),或禁用它们。