ฉันมีคลาส C++ ต่อไปนี้:
// Header-File
class A
{
public:
A();
private:
B m_B;
C m_C;
};
// cpp-File
A::A()
: m_B(1)
{
m_B.doSomething();
m_B.doMore();
m_C = C(m_B.getSomeValue());
}
ตอนนี้ฉันต้องการ หลีกเลี่ยง class A
เพื่อเรียกตัวสร้าง ใดๆ ของ C m_C
เพราะในบรรทัดสุดท้ายของ A::A()
ฉันจะเริ่มต้น m_C
ด้วยตัวเองอยู่แล้ว เพราะฉันต้องเตรียม m_B
ก่อน ฉันสามารถจัดเตรียมคอนสตรัคเตอร์เริ่มต้นที่ว่างเปล่าสำหรับ class B
ได้ แต่นั่นไม่ใช่ความคิด
ฉันได้ลองเพิ่ม m_C(NULL)
ในรายการเริ่มต้นของ A::A()
แล้ว บางครั้งก็ได้ผล บางครั้งก็บอกว่าไม่มีตัวสร้างที่รับ NULL
เป็นอาร์กิวเมนต์
แล้วฉันจะให้ m_C
ยังไม่ได้เตรียมใช้งานได้อย่างไร ฉันรู้ว่าด้วยพอยน์เตอร์ m_C(NULL)
-way ก็ใช้งานได้ และฉันไม่ต้องการจัดสรรมันแบบไดนามิกโดยใช้ new
ความคิดใด ๆ ที่ชื่นชม