2013-04-23 137 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

相关问题