Ich muss den Konstruktoraufruf verzögern, damit ich den Wert initialisieren kann, der an den Konstruktor übergeben werden soll. Ich habe ein kurzes und sehr vereinfachtes Beispiel geschrieben.Verzögerung Konstruktor Aufruf
class A
{
private:
ObjectA* _ptr;
public:
A(ObjectA*);
};
class B
{
private:
A object; // The constructor seems to be called here?
ObjectA* obj;
public:
B();
};
A::A(ObjectA* ptr)
{
this->_ptr = ptr;
}
B::B()
{
obj = new ObjectA();
object(obj); // I want to call the 'A' constructor here, after initializing of 'obj'.
}
Ist es möglich?
Erstellen Sie 'A' dynamisch im' B'-Konstruktor und speichern Sie den Zeiger darauf. – Ari0nhh
Verwenden Sie für C++ 17 ['std :: optional'] (http://en.cppreference.com/w/cpp/utility/optional). Oder verbessern Sie einfach Ihr Design. – StoryTeller
Warum können Sie das Erstellen des Objekts nicht einfach aufschieben, bis der Wert, der zum Erstellen des Objekts verwendet werden soll, initialisiert wird? Es ist nicht so, dass es oft sinnvoll ist, ein Objekt zu erstellen und es dann zu verwenden, bevor es richtig initialisiert wurde. – Peter