创建一个Noncopyable类并继承到我的类中

时间:2012-02-27 00:00:59

标签: c++ c++11 noncopyable

我正在尝试创建一个不可复制的类并将其继承到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':纯说明符或抽象覆盖说明符只允许在虚函数上使用。

编译器认为我正在尝试将非虚函数创建为纯函数。有人可以解释一下原因吗?我可以通过删除“删除”关键字来解决上述问题。

1 个答案:

答案 0 :(得分:4)

您可以从post看到vs2010不支持默认或删除的功能。对于这件事,vc11

也不会