1

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

Board::Board(int w, int h)

我正在尝试创建一个连接四游戏。ConnectFour.h 文件具有以下内容:

Board b;

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

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

除其他外,显然。

它给了我错误:

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

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

注:候选人是:|

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

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

如果有人能伸出援手,我将不胜感激。

编辑:原来我有点傻。多谢你们。

4

2 回答 2

5

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


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

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

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

于 2013-04-23T23:25:38.903 回答
1

我猜是这样的

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

class connectFour
{
    connectFour::connectFour(int, int)
    {
        board b(7,9);
    }
};
于 2013-04-23T23:36:05.157 回答