创建一个不可复制的类并继承到我的类中

Creating a Noncopyable class and inherit into my class

本文关键字:继承 我的 可复制 一个 创建      更新时间:2023-10-16

我正在尝试创建一个不可复制的类并将其继承到myclass。以下是代码的外观:

template<class T>
struct NonCopyable
{
protected:
    NonCopyable() {}
private:
    NonCopyable(const NonCopyable& x) = delete;  
    T& operator=(const T& x) = delete;
};

删除允许第三种机制通过重复使用删除关键字来将功能定义为"已删除"

class Myclass : public RefCnt, private NonCopyable<Myclass>
{
    virtual unsigned int GetID() = 0;
    virtual bool Serialize() = 0;
};

现在,当我尝试这样做时,我在VS 2010上得到一个错误:"NonCopyable":纯说明符或抽象重写说明符只允许在虚拟函数上使用。

编译器认为我试图创建一个纯的非虚拟函数。有人能解释一下原因吗?我可以通过删除"删除"关键字来解决上述问题。

您可以从这篇文章中看到,vs2010不支持默认或删除的函数。就这一点而言,vc11 也不会