我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