【发布时间】:2014-10-20 12:09:28
【问题描述】:
我像这样重载了一个 QWidget 构造函数:
.h 文件:
public:
LCDRange(QWidget* parent = 0);
LCDRange(QWidget* parent = 0, const char* text = 0);
.cpp 文件:
LCDRange::LCDRange(QWidget* parent): QWidget(parent){
init();
std::cout << "constr 1 called" <<std::endl;
}
LCDRange::LCDRange(QWidget* parent, const char* text): QWidget(parent){
init();
setText(text);
std::cout << "constr 2 called" <<std::endl;
}
void LCDRange::init(){
//code...
}
然后,在我的 main() 函数中,我这样调用构造函数:
LCDRange* range1 = new LCDRange(this, "Text 1");
或者像这样:
LCDRange* range2 = new LCDRange(this);
问题是第二个(range2)根本不起作用。 编译器抱怨:
main.cpp:26: 错误:重载 'LCDRange(MyWidget* const)' 的调用不明确
LCDRange* range2 = new LCDRange(this);
候选人是:
LCDRange::LCDRange(QWidget*, const char*)
LCDRange::LCDRange(QWidget*)
LCDRange::LCDRange(const LCDRange&)
我不明白第三个构造函数出现在哪里... 为什么它在中说“const”:
重载 'LCDRange(MyWidget* const)
【问题讨论】:
-
第三个构造函数是自动创建的拷贝构造函数
-
请同时显示构造函数定义.. .h 文件定义
标签: qt constructor overloading