У меня есть несколько классов, которые я не хочу копировать, некоторые из этих классов имеют члены-указатели. Чтобы сделать эти классы не копируемыми, я в частном порядке наследую следующий шаблон класса:
template <class T>
class Uncopyable
{
protected:
Uncopyable() {}
virtual ~Uncopyable() {}
private:
Uncopyable(const Uncopyable &);
T & operator=(const T&);
};
Который я использовал так:
class Entity : private Uncopyable<Entity> { }
Это прекрасно работает, однако, когда я компилирую с -Weffc ++, я все равно получаю следующее предупреждение:
class Entity has pointer data members
but does not override Entity(const Entity&)
or operator=(const Entity&)
Почему он до сих пор дает мне это предупреждение?