【发布时间】:2014-07-16 15:10:37
【问题描述】:
我有一个抽象基类,它有一些虚拟方法和一个虚拟析构函数。我想将基类(和派生类)的复制构造函数和赋值运算符设为私有,这样我就可以隐藏它们并且静态分析工具(klockwork)无法标记它。这是我的代码 sn-p:
class Parent: public mainParentClassIDontCareAbout
{
public:
Parent (int a);
virtual ~Parent ();
protected:
void doSomething();
.
.
private:
// Hide assignment operator and copy constructor
Parent (const Parent&) {};
Parent operator= (const Parent&) {return *this;};
} // end of parent class definition
class Child : public Parent
{
public:
Child (void *x, int y, bool z);
~Child ();
protected:
.
.
.
private:
// Hide assignment operator and copy constructor
Child (const Child&) {};
Child operator= (const Child&) {return *this;};
} // end of parent class definition
但是,我得到一个编译时错误:
invalid abstract return type for member function ‘Lib::Parent Lib::Parent::operator=(const Lib::Parent&)’
我想隐藏赋值运算符和复制构造函数。当我们有一个虚拟析构函数时,这不是一个有效的行为吗?或者如果我想有相同的场景,有什么解决方案吗?
【问题讨论】:
标签: c++ inheritance polymorphism copy-constructor static-analysis