我正在尝试编写一个相对较深的类层次结构,而我的编译器不断抛出“没有匹配的函数来调用 [bass 类的默认构造函数]”。这是场景:
Class A {
A(int);//note, no default constructor
}
Class B : public A {
B(int i, int j) : A(i), someMemberVariable(j) {}
int someMemberVariable;
}
Class C : public B {
C(int k, int l) : B(k, l) {}
}
并且编译器在 C 类的构造函数的行上抛出错误,说“没有匹配的函数用于调用 A::A()”并告诉我使用 A::A(int)。
我知道我没有 A 类的默认构造函数,当我尝试对子类进行子类化时,编译器会感到困惑。但是,我不明白为什么。我使用了一个初始化列表来避免这种情况。如果我只使用 2 级深的类,那么它工作得很好,但是第三类给了我错误。我在这里做错了什么?