Мне нужно задержать вызов конструктора, поэтому я могу инициализировать значение, которое должно быть передано конструктору. Я написал короткий и очень упрощенный пример.Задержка конструктора вызова
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'.
}
Возможно ли это?
Создайте 'A' динамически в конструкторе' B' и сохраните указатель на него. – Ari0nhh
Для C++ 17 используйте ['std :: optional'] (http://en.cppreference.com/w/cpp/utility/optional). Или просто улучшите свой дизайн. – StoryTeller
Почему вы не можете просто отложить создание объекта до тех пор, пока значение, которое будет использоваться для его создания, не будет инициализировано? Это не так, как часто бывает разумно создавать объект, а затем использовать его, прежде чем он будет правильно инициализирован. – Peter