私の質問に特に関連する回答は見つかりませんでした。私が見たことでは、「奇妙な」ケースが少しあります。エラー:タイプ 'class'が 'class'の直接ベースではありません
私はクラスChild2
を継承し、それはChild1
から継承し、順にParent
を継承しています。 Parent
にはコンストラクタがありません。ここで
は私が継承する方法です:
Child1.h:
class Child1 : virtual public Parent
これは私がChild2
のコンストラクタから呼び出したい関数です。
void Child1::foo(unsigned int i)
{
// ...
}
子2
Child2::Child2() : Child1()
{
foo(10);
}
foo()
という機能はChild2
にありません。正しく理解しても曖昧さはありません。
しかし、私はこのエラーが発生した:
Child2.cpp: In constructor ‘Child2::Child2()’: Child2.cpp:12:28: error: type ‘Child1’ is not a direct base of ‘Child2’ Child2::Child2() : Child1()
Child1
のコンストラクタが働いているので、私はそれを残してきました。この場合重要であるかどうかはわかりません。
この場合、重要である可能性があります。あなたは[mcve]を提供する必要があります。結局のところ、あなたが問題が何であるか分からないなら、あなたが残したものは、他の人があなたを助けることができるものではないことをどのように知っていますか? – Peter
'foo'関数の宣言を共有してください。 – MKR