Я пытаюсь создать не копируемый класс и унаследовать его от 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".