Tôi cần trì hoãn cuộc gọi hàm tạo, vì vậy tôi có thể khởi tạo giá trị cần được truyền cho hàm tạo. Tôi đã viết một ví dụ ngắn và rất đơn giản.Gọi hàm tạo trễ
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'.
}
Có thể không?
Tạo 'A' động trong hàm tạo' B' và lưu con trỏ vào đó. – Ari0nhh
Đối với C++ 17, sử dụng ['std :: optional'] (http://en.cppreference.com/w/cpp/utility/optional). Hoặc chỉ cần cải thiện thiết kế của bạn. – StoryTeller
Tại sao bạn không thể trì hoãn việc tạo đối tượng cho đến khi giá trị được sử dụng để xây dựng nó được khởi tạo? Nó không phải là nó thường là hợp lý để tạo ra một đối tượng và sau đó sử dụng nó trước khi nó được khởi tạo đúng. – Peter