我oveloaded一个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...
}
然后,在我的主()函数,我打电话给这样的构造函数:
LCDRange* range1 = new LCDRange(this, "Text 1");
或像这样:
LCDRange* range2 = new LCDRange(this);
的问题是,第二个(范围2)不会在所有的工作。 编译器抱怨:
main.cpp中:26:错误:重载 'LCDRange类(进myWidget * const的)' 的呼叫是不明确的
LCDRange类*范围2 =新LCDRange类(本);
候选人是:
LCDRange类:: LCDRange类(QWidget的*,为const char *)
LCDRange类:: LCDRange类(QWidget的*)
LCDRange类:: LCDRange的(常量LCDRange的&)
我不明白哪儿来的第三个构造出现... 为什么它说,在“常量”:
overloaded 'LCDRange(MyWidget* const)
第三个构造函数是自动创建的拷贝构造 – 2014-10-20 12:14:47
请还显示构造器的定义.. .h文件中定义 – Pratham 2014-10-20 12:15:46
我更新我的帖子 – 2014-10-20 12:20:41