Создание класса Noncopyable и наследовать в мой класс - PullRequest
3 голосов
/ 27 февраля 2012

Я пытаюсь создать не копируемый класс и унаследовать его от 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»: описатель чистого или абстрактного переопределения разрешен только для виртуальной функции.

Компилятор думает, что я пытаюсь создать не виртуальную функцию как чистую. Может кто-нибудь объяснить, почему? Я могу решить вышеуказанную проблему, удалив ключевое слово "delete".

1 Ответ

4 голосов
/ 27 февраля 2012

Из этого сообщения видно, что vs2010 не поддерживает функции по умолчанию или удаленные. В этом отношении ни vc11

...