delete funktioniert nicht?
-
Hallo.
Ich habe ein Interface:class ITest { public: ITest(...) : ... { } virtual void TestFunc() = 0; private: ... };Dann eine Testklasse:
class CTest : public ITest { public: CTest(...) : ITest(...) { Msg("Test created"); } ~CTest() { Msg("Test deleted"); } };Und einen Vektor:
std::vector<ITest*> MyVector; MyVector.push_back(new CTest(...)); // Test created wird ausgegeben ... for (vector<ITest*>::iterator it = MyVector.begin(); it != MyVector.end(); ) { delete (*it); // Test deleted wird NICHT ausgegeben it = MyVector.erase(it); }Weiß jemand, warum "Test deleted" nicht ausgegeben wird?
Gruß
-
virtual ~ITest()
-
Du musst den Destruktor virtual machen (in der Basisklasse), wenn du über einen Basisklassenzeiger ein Element einer abgeleiteten Klasse löschen willst.
-
Danke

Gruß