Der Header ist definiert wieerstellen Objekte in Memberfunktion
class MyClass_A;
typedef map<string, MyClass_A*> MyMap
typedef vector<MyClass_A*> MyList
class MyClass_A
{
// define some functions
}
class MyClass_B
{
public:
void check(){ //create MyClass_A pointer to store in myMap and myList }
private:
MyMap myMap;
MyList myList;
}
Die Hauptfunktion ist wie
int main()
{
MyClass_B class_B;
class_B.check();
/*
do some works
*/
}
I MyClass_A Objekte in Schach definieren möchten, die eine Elementfunktion in MyClass_B ist. Und die Objekte würden nicht bis zum Ende der Hauptfunktion zerstören.
Ich habe einige Methoden ausprobiert, aber die Objekte würden entfernen, wenn das Element check member verlassen. Gibt es eine Lösung?
* Die Objekte würden entfernen, wenn die Funktion check member verlassen würde * - äh, soweit ich weiß, gibt es in C++ keine Garbage Collection wie in Java (wo man eine Instanz verlieren könnte, wenn man sie nie referenziert). könntest du wenigstens einen Hinweis darauf geben, was * einige Arbeiten * tun und wie 'void check()' funktioniert. es könnte einen Einblick geben. –
Sie sollten diese Objekte mit 'new' erstellen, damit sie beim Verlassen der Funktion' MyClass_B :: check() '... nicht verschwinden. –
Die Namen' _MAP' und '_LIST' sind, abgesehen davon, dass sie nicht unkonventionell sind, nicht legal in C++. Namen, die mit einem Unterstrich beginnen, dürfen keinen zweiten Unterstrich oder einen Großbuchstaben als zweites Zeichen haben. –