Иногда вы просто не можете сделать деструктор не виртуальным, потому что он может иметь базовый класс, где деструктор является виртуальным.
р:
template<class T>
class Base {
public:
Base();
friend class T;
};
Теперь это не работает ... Есть ли способ сделать это?
Я на самом деле пытаюсь сделать универсальный герметик следующим образом:
class ClassSealer {
private:
friend class Sealed;
ClassSealer() {}
};
class Sealed : private virtual ClassSealer
{
// ...
};
class FailsToDerive : public Sealed
{
// Cannot be instantiated
};
Я нашел этот пример где-то на этом сайте, но не могу найти его ... (Вот)
Я знаю, что естьдругие способы делать это, но сейчас мне любопытно, если вы действительно можете сделать что-то подобное.