假設我有一個類,如下所示:構造方法對象作爲參數
class A{
int x ;
A(int i){
x = i ;
}
}
我有具有作爲成員對象類A的一個實例,另一類B.
class B{
int y ;
A obj_a ;
B(int j , A a){
y = j ;
obj_a = a ;
}
}
當我做到以下幾點:
int main(){
A obj1(1) ; // obj.x has value 1
B obj2(2 , obj1) ;
}
第二行拋出一個錯誤說形式的無函數調用:: A()。我知道這意味着缺少一個默認樣式構造函數,但爲什麼我需要這個呢? obj1是使用定義的構造函數創建的,因此不是問題。
我目前的想法是A a
和obj_a = a
會調用隱式定義的複製構造函數。
注意:爲簡潔起見,我已排除私人,公共等。
後實際的錯誤。你的ctor可能抱怨它應該是'const int i'; – stark
您明確要求不使用初始化程序列表。 – kfsone