3

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

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

4

1 回答 1

4

从这个帖子可以看出vs2010不支持默认或者删除的功能。就此而言,vc11 也不会

于 2012-02-27T00:05:28.267 回答