我有一個抽象類A
和類B
與構造:如何在另一個構造函數中調用對象構造函數?
B(A &a) {...}
現在,我創建在主程序這些對象如下:
int main(){
std::unique_ptr<A> a = make_A();//don't mind make_A()
if(a==null)
a = make_default_A();
B b (*a);
}
現在,我創建了一個類的設置系統:
class System{
public:
System();
private:
B b;
std::unique_ptr<A> a;
}
而且構造函數是:
System(){
a = make_A();
if(a==null)
a = make_default_A();
b(*a);
}
顯然這是錯誤的,因爲我不能在上面的代碼中調用B
的構造函數,但是我不知道如何執行此操作。我想到的唯一解決方案是使用std::unique_ptr<B> b;
而不是B b;
,然後撥打b = make<B> (*a);
。
'B = B(*一);'應該重新初始化'B'(請注意,它的第一個初始化發生在進入構造函數之前) – AndyG
或者,也許你可以去用於重載'='運算符並執行相同的操作 –
@AndyG - * initialize *在C++中有一個非常具體的含義,而'b = B(* a);'不*初始化'b' - 它賦值給它。 –