我正在尝试创建一个不可复制的类并将其继承到myclass。以下是代码的外观:
template<class T>
struct NonCopyable
{
protected:
NonCopyable() {}
private:
NonCopyable(const NonCopyable& x) = delete;
T& operator=(const T& x) = delete;
};
删除允许第三种机制通过重用delete关键字将函数定义为“已删除”。
class Myclass : public RefCnt, private NonCopyable<Myclass>
{
virtual unsigned int GetID() = 0;
virtual bool Serialize() = 0;
};
现在,当我尝试这个时,我在VS 2010上收到一个错误:'NonCopyable':纯说明符或抽象覆盖说明符只允许在虚函数上使用。
编译器认为我正在尝试将非虚函数创建为纯函数。有人可以解释一下原因吗?我可以通过删除“删除”关键字来解决上述问题。