【发布时间】:2014-06-15 03:35:25
【问题描述】:
我想知道我应该如何为我的第四节课调用我的构造函数。 A类是基类,B类和C类继承它。
ClassA::ClassA( const string &nam, const string &ide, double bal)
:name(nam), id(ide), balance(bal)
{
}
ClassB::ClassB(const string &nam, const string &ide, double bal)
:ClassA(nam, ide, bal)
{
}
ClassC::ClassC(const string &nam, const string &ide, double bal)
:ClassA(nam, ide, bal)
{
}
现在我的第四类继承了 B 类和 C 类 我应该如何为我的 D 类调用构造函数?
我尝试过这种方式,但我得到“没有匹配的函数调用 ClassB::ClassB()â”
ClassD::ClassD(const string &nam, const string& ide, double bal)
:ClassA(nam, ide, bal), ClassB(), ClassC()
{
}
【问题讨论】:
-
因为没有其他人(包括链接的问题)能够解决您收到的实际错误消息;我将会。您的
ClassB或ClassC构造函数中的任何一个 看起来是否带有no 参数?是的,都没有。那么你为什么要调用ClassB()和ClassC()呢?使用他们声明的构造函数。也就是说,链接问题和发布的答案中的所有内容都适用,因此请仔细阅读。 -
我只是对调用哪个构造函数以及不调用哪个构造函数感到非常困惑?我知道我应该调用 ClassA 构造函数,因为它是基类,但这是否意味着我根本不调用 B 类和 C 类构造函数?如果我这样做,我是否将论点留空,这就是我认为我得到那个错误的原因。 *所有虚拟继承语句都包含在我的 .h 文件中。
标签: c++ inheritance diamond-problem