首先,我不是在談論這些問題(1,2)。我正在談論一個已經有構造函數的類,它只能被值嵌套,而不是定義......如果這是有道理的。如何調用嵌套類的構造函數
目前,我有這樣的方法,其工作原理,但使用new
是醜陋IMO:
class A {
private:
int value;
public:
A(int _value);
};
class B {
private:
A *a;
public:
B(int _value);
};
B的構造函數:
B::B(int _value)
{
a = new A(_value);
}
如果我改變A *a;
到A a
,我將如何創建B
,以便以相同的方式調用A
的構造函數?
我已經試過:
B::B(int _value)
{
a = A(_value); // no matching function for call to ‘A::A()’
a = A::A(_value); // cannot call constructor ‘A::A’ directly
a(_value); // no match for call to ‘(A) (int&)’
a.A(_value); // invalid use of `A::A`
}
這似乎並不可能,而不:
- 使用指針與
new
- 使用一些明確的
void A::init(_value)
(將需要額外的構造函數A
不採取任何論據) - 擴展類A(將需要更改特定私人成員保護和W烏爾德齧合他們的「命名空間」,在不希望的方式)
- 可疑使用
memcpy()
(A temp(_value); memcpy(&a, &temp, sizeof (A));
)
不訴諸於上述方法這是可能的?
使用引用成員和構造函數初始值設定項列表。 –
在這種情況下,參考文獻對價值有什麼優勢?看起來兩者都是在創建'B'時創建的,並且兩者具有相同的用法語法和語義。 –
不,我可能剛剛把你的問題弄錯了。 –