2012-09-05 44 views
-1

我一直在使用這種形式類重構:繼承與參數

MainWindow(QWidget *parent) : 
     QMainWindow(parent), 
     ui(new Ui::MainWindow) 
{ 
    ... 
} 

我想用這種形式看起來像這樣來重構它一個類中聲明:

class MainWindow : QMainWindow, ui 
{ 
    MainWindow(QWidget *parent) 
    { 
     ... 
    } 
} 

但我刪除了參數在第一種形式。這個參數是什麼意思?

如何讓他們在第二種形式?請向我解釋第一種語法(或指向教程)。我不明白帶參數的繼承。

編輯:

我現在明白了這個問題,類中,我並沒有在第一次看看見一個單獨的.h文件中被初始化。我想:在方法定義之後是繼承運算符,而它是成員初始化運算符。

+0

除非我誤解了,答案是「你不能」。您已經在使用正確的構造函數語法;你不能把你的一些構造函數語法移入類定義中,並期望它能夠工作。參數「parent」甚至沒有在類定義的位置定義! – Rook

+0

第一個是構造函數的聲明。第二個是對繼承的一些瘋狂嘗試。冒號後的部分是不同的東西。在第一個片段中,':'後面的部分是成員初始值設定項,第二個片段中':'後面的部分正在執行inheritence –

+0

@BobFincheimer感謝「成員初始值設定項」是我需要的術語。謝謝 – bokan

回答

1

這是一個構造函數的實現,調用基類的構造函數和初始化列表中initializind數據成員:

​​

這是非常可能的類從QMainWindow繼承和擁有Ui::MainWindow*數據成員稱爲ui。你的第二個代碼片段看起來像是一個不正確的嘗試來聲明一個類。沒有「帶參數的繼承」,所以你不能做你想問的問題。