我有一些这样的代码(C ++ 11):
Form.hpp:
class CForm{
public:
CForm(int paTemplate);
protected:
virtual void createFromTemplate(int paTemplate);
}
Dialog.hpp
class CDialog : public CForm {
public:
CDialog(int paTemplate);
private:
void createFromTemplate(int paTemplate);
};
表格
CForm::CForm(int paTemplate){
createFromTemplate(paTemplate);
}
对话框.cpp
CDialog::CDialog(int paTemplate) : CForm(paTemplate){
active = false;
}
我希望我的对话框调用它自己的
createFromTemplate
,以这种方式调用表单的createFromTemplate
。我该如何实现? (我在CDialog(template);
中称为main
)。 最佳答案
这是不可能的-在构造函数/析构函数中调用虚拟函数时,将调用“ this”类或更低版本中的版本。在您的情况下,无论您做什么,它都将始终调用CForm :: createFromTemplate()。
检查此链接-http://www.artima.com/cppsource/nevercall.html-这是“有效C ++”的一章。
关于c++ - 在C++中的父级构造函数中调用重写的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26125980/