Используя эти определения классов (а остальные идентичны тем, которые вы опубликовали)
class TimeManager
{
public:
virtual ~TimeManager() { cout << "~TimeManager" <<endl; }
};
class UserManager : virtual public TimeManager
{
public:
virtual ~UserManager() { cout << "~UserManager" <<endl; }
};
class CServer : virtual public UserManager
{
public:
virtual ~CServer() { cout << "~CServer" <<endl; }
};
Запуск дисплея
~CServer
~UserManager
~TimeManager
между первым и вторым нажатием клавиши ввода --- Точнокак и следовало ожидать.Кажется, ваша проблема в другом месте.
Обратите также внимание на то, что в классе CServer есть несколько опечаток, в частности, это иногда «CServer», а иногда «Server».Кроме того, «виртуальный» пишется неправильно, а dtor является приватным.Но любой из них помешал бы его компиляции, не вызвал бы ошибку времени выполнения.
Обратите также внимание, что код, как вы его разместили, не требует виртуального наследования.Либо вы без необходимости подбрасываете ключевое слово, либо ваши занятия более сложны, чем вы разрешаете.