2013-04-23 127 views
1

當我嘗試初始化Board類型的對象時,C++出現上述錯誤。對於板的構造函數的兩個整數,所以它的沒有匹配的函數調用C++

Board::Board(int w, int h) 

而且我想創建一個連接四個遊戲。該ConnectFour.h文件有以下幾點:

Board b; 
在其私有變量

,並在ConnectFour.cpp構造是這樣的:

ConnectFour::ConnectFour() 
{ 
    Board b(7, 6); 

除其他事項外,很明顯。

它給我的錯誤:

在構造「屏風式四子棋::屏風式四子棋(INT,INT)」:|

錯誤:沒有匹配函數調用'Board :: Board()'|

注意:候選人是:

注意:Board :: Board(int,int)|

注意:候選人需要2個參數,0提供|

如果任何人都可以伸出援手,我會很感激。

編輯:原來我有點傻。多謝你們。

+1

見http://stackoverflow.com/questions/2308646/different-ways-of-constructing-an-object-in-c – jarmod 2013-04-23 23:26:30

回答

5

您需要提供一個構造板不帶任何參數與Board b;代碼工作,或者你需要的時候它的創建Board b(width, height);通過的寬度,高度的對象,也可以板的初始化放到初始化列表ConnectFour


ConnectFour::ConnectFour() : 
b(7,6) 
{ 
} 
 

因此它具有ConnectFour創建時所需的信息。

最後,您可以在父類中保留一個指向Board對象的指針,並在父類的構造函數中動態創建它。這需要更多的關注,並可能使用智能指針來正確處理對象的創建和銷燬。

1

我猜是這樣的

class board 
{ 
public: 
    board::board(int w,int h) 
    { 
     w = 0; 
     h = 0; 
    } 
}; 

class connectFour 
{ 
    connectFour::connectFour(int, int) 
    { 
     board b(7,9); 
    } 
}; 
+0

不太解決OP的問題。他擁有Board作爲ConnectFour的成員,這意味着他必須做更多的C++體操比你在這裏展示的更多。 – 2013-04-23 23:47:24