【发布时间】:2011-11-17 09:22:29
【问题描述】:
我遇到了以下问题:有一个抽象基类,另外两个抽象类实际上继承自基类,作为结论,必须调用它的构造函数,并带有所有需要的参数。
但是现在,我得到了一个“普通”类,它确实继承了两个二阶类,因此必须自己调用基类构造函数(因为基类实际上是从两个二阶类继承的),但是两个二阶构造函数都带参数传递给基类构造函数。
是否有可能以一种不需要传递那些在这种情况下未使用的参数的方式实现构造函数?
我希望我能够准确地描述我的问题,如果有任何问题我会很乐意回答。
【问题讨论】:
-
听起来你很努力地描述它,但如果你能敲出一个小代码示例,它可能会帮助我们更好地理解你在做什么,以便提供更好的答案:)跨度>
-
听起来像
struct base { base(char a) {} virtual func()=0;}; struct derived1 : public virtual base { derived1() : base('a') {} func() {} }; struct derived2 : public virtual base { derived2() : base('b') {} func() {} }; struct derived3 : public derived1, derived2 { derived3() : derived1(), derived2(), base('c') {} };? -
我喜欢疯狂的代码评论 :)
-
嗯,原来我对虚拟继承的了解不够,无法回答这个问题。去学习了!
-
我唯一的想法是将受保护的构造函数添加到两个派生类中,以表示它们不必构造基类,但是查看标准,我看不到任何澄清问题的内容。