Существует ли какой-либо автоматизированный способ реализации вызовов виртуальных методов после конструктора и перед деструктором?
Из-за известных проблем с вызовом виртуальных методов из конструкторов и деструкторов, я обычно получаю классы, которым нужен метод final-setup для вызова сразу после их конструктора, и метод pre-teardown, вызываемый непосредственно перед деструктор, вот так:
MyObject * obj = new MyObject;
obj->Initialize(); // virtual method call, required after ctor for (obj) to run properly
[...]
obj->AboutToDelete(); // virtual method call, required before dtor for (obj) to clean up properly
delete obj;
Это работает, но несет с собой риск того, что вызывающая сторона забудет вызвать один или оба этих метода в подходящее время.
Таким образом, вопрос заключается в следующем: есть ли в C ++ способ заставить эти методы вызываться автоматически, поэтому вызывающая программа не должна помнить, чтобы вызывать их? (Я предполагаю, что это не так, но я подумал, что все равно буду спрашивать на всякий случай, если есть какой-нибудь умный способ сделать это)