3

コピー不可能なクラスを作成し、それを myclass に継承しようとしています。コードは次のようになります。

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

delete を使用すると、delete キーワードを再利用して関数を「deleted」として定義する第 3 のメカニズムが可能になります。

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

これを試してみると、VS 2010 で次のようなエラーが表示されます。

コンパイラは、非仮想関数を純粋として作成しようとしていると考えています。誰かが理由を説明してもらえますか? 「削除」キーワードを削除することで、上記の問題を解決できます。

4

1 に答える 1

4

この投稿から、vs2010 がデフォルトまたは削除された機能をサポートしていないことがわかります。さらに言えば、vc11 も

于 2012-02-27T00:05:28.267 に答える