我有下面的類結構:警告:基類「A」應該明確初始化的拷貝構造函數
class A{
A(){}
A(const A& src){}
};
class B : virtual A {
B():A(){}
B(const B& src):A(src){}
};
class C : virtual A {
C():A(){}
C(const C& src):A(src){}
};
class D : virtual B, virtual C {
D():B(),C(){}
D(const D& src):B(src),C(src){}
};
這給了我警告:
在拷貝構造函數'd':
警告:基類 'A' 應在副本中明確初始化 構造
我不喜歡。 D的副本-Constructor調用B的copy-ctor
,它稱爲copy-ctor
A. 爲什麼它要求我在D中調用A的copy-ctor
?
如果我願意,那麼A的copy-ctor
會不會被調用兩次?一旦從B調用,並且一次從D調用。
對此的任何輸入都非常感謝。
它永遠不會被調用兩次。但我也沒有真正明白這一點。 – 2012-02-01 15:59:57
顯示您的_real_測試用例。類定義以分號結尾,您的構造函數不是_really_「private」。 – 2012-02-01 16:01:11
當我解決這些問題時,代碼片段編譯:http://ideone.com/V3ygZ所以你的問題在你的無效C++和正確的方法之間。直到我們看到您正在使用的代碼時才知道。 – 2012-02-01 16:01:37