【发布时间】:2011-08-19 04:36:42
【问题描述】:
据我所知,不能调用基类的构造函数。我知道的唯一方法是:
MyClass::MyClass(/* args */) : Base(/* args */)
{
// ...
}
但这会在开始时调用构造函数。 有没有办法在构造函数的其他地方调用它?像这样的:
MyClass::MyClass(/* args */)
{
// ... instructions
Base::Base(/* args */);
// ... other_instructions
}
根据这个What are the rules for calling the superclass constructor? 问题,我知道没有办法,但我读了here,我猜这是可能的,但如果我尝试,我会得到:
error: invalid use of 'class Base'.
我做错了吗?是否有可能以某种方式做到这一点,或者是否有任何其他可能的解决方案来满足这一需求?
谢谢!
编辑:我知道我忘记了一个关键点:基类是框架的一部分,因此如果可能的话,最好不要修改它。
【问题讨论】:
-
问题是:你为什么需要这个?
-
由于某种原因我无法重新标记这个问题,我认为将 OOP 作为标签添加是合适的。
-
我需要这个,因为我需要修改Qt框架的一个类,但是我想避免不得不直接修改Qt源代码。似乎小部件的构造函数做了一些导致调用 Qt 驱动程序中的某些方法的事情。在此调用发生之前,我希望我添加的其他一些字段已经初始化。