2013-08-17 30 views
0

我正在爲C++中的directx開發GUI。 我有一類爲我的控件: 從具有固定數據的類繼承的類

class cControl; 

一類爲我的窗戶:

class cWindow : public cControl 

和我想要做的就是寫一個類的一種特殊的窗口(顏色選擇器)。

class cColorPicker : public cWindow 

colorpicker類的構造函數只調用cControl函數。 要爲每一個我使用此代碼窗口設置的東西,在GUI程序:

for each(cWindow* pWindow in m_vWindows) 
    // stuff 

我注意到調試那個位置,寬度,高度和我的ColorPicker構造函數設置每一件事情的結果無效。

編輯: 我想要做的是有一個特殊的窗口,帶有構造窗口的寬度,高度等的構造函數。 這會做這項工作嗎?

cColorPicker::cColorPicker(int x, int y) 
{ 
    cWindow::cWIndow(x, y, ...) 
} 

EDIT2: 第二個問題: 我要打電話是從CWindow類(即增加了一個控制窗口中的功能)的功能,但它似乎給問題也一樣,我想我必須這樣做在cColorPicker的構造函數內部。

回答

1

你應該使用member initializer list初始化基本對象與參數

cColorPicker::cColorPicker(int x, int y) 
: cWIndow(x, y, ...), width(42),height(42) 
{ 
} 

編輯: 如果你想額外的參數添加到基礎構造,應該從cColorPick構造函數傳遞給它的基礎:

cColorPicker::cColorPicker(int x, int y, cControl* pControl) 
: cWIndow(x, y, pControl, ...), width(42),height(42) 
{ 
} 

// edit or create a new cWindow constructor to accept CControl* parameter 
cWIndow::cWIndow(int x, int y, cControl* pControl) 
:width(x), height(y), m_vControls(pControl) 
{ 
} 
+0

我必須調用一個cWindow ::函數,但它似乎也給出了問題,但對於這個竅門的pas問題。謝謝! – caccolona

+0

你應該在構造函數中初始化對象,在cWindow構造函數中調用cWindow :: function來初始化cWidnow – billz

+0

看EDIT2的問題解釋 – caccolona