繁体   English   中英

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

[英]No matching function call C++

尝试初始化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个|

如果有人可以伸出援手,我将非常感激。

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

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


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

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

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

我猜是这样的

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM