没有匹配的函数调用C ++

时间:2013-04-23 23:23:02

标签: c++

在尝试初始化Board类型的对象时,我在C ++中遇到上述错误。 board的构造函数有两个整数,所以它是

Board::Board(int w, int h)

我正在尝试创建一个Connect Four游戏。 ConnectFour.h文件包含以下内容:

Board b;

在其私有变量中,ConnectFour.cpp中的构造函数是:

ConnectFour::ConnectFour()
{
   Board b(7, 6);
显然,等等。

它给了我错误:

在构造函数'ConnectFour :: ConnectFour(int,int)'中:|

错误:没有匹配函数来调用'Board :: Board()'|

注意:候选人是:|

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

注意:候选人需要2个参数,0提供|

如果有人伸出援助之手,我真的很感激。

编辑:事实证明我有点傻。谢谢你们。

2 个答案:

答案 0 :(得分:5)

你需要提供一个不带参数的板的构造函数来处理Board b;代码,或者你需要在创建对象时将宽度,高度传递给对象,或者你可以放置它将Board初始化为ConnectFour的初始化列表

Board b(width, height);

以便在创建ConnectFour时具有所需的信息。

最后,您可以在父类中保留指向Board对象的指针,并在父类的构造函数中动态创建它。这需要更多的关注,并可能使用智能指针来正确处理对象的创建和销毁。

答案 1 :(得分:1)

我猜这样的事情

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

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