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

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

最佳答案

从此post中可以看到vs2010不支持默认或删除的功能。为此,vc11也不会

10-06 06:03