错误:没有调用“Square::Square(Square Color &,Location*)”的匹配函数

Posted

技术标签:

【中文标题】错误:没有调用“Square::Square(Square Color &,Location*)”的匹配函数【英文标题】:error:no matching fucntion for call to 'Square::Square(SquareColor&,Location*)' 【发布时间】:2020-12-29 11:30:31 【问题描述】:

我正在尝试用 C++ 制作一个国际象棋游戏,但我遇到了一个无法解决的错误

错误在哪里:

for(auto file : all_E)
    
        Square newSquare= new Square(currentColor, new Location(file,i));
        boardSquares[i][column]=newSquare;
    

这些是SquareLocation

class Square 
    SquareColor squareColor;
    Location location;
    bool isOcuppied;

public:
    Square();
    Square(SquareColor sqCol, Location loc );
    void reset();
    bool isOccupied();
    void setOccupied(bool occupied);
    SquareColor getSqCol();
    Location getLoc();
    char* toString();
;

class Location 
    File file;
    int rankk;

public:
    Location();
    Location(File _file, int _rankk);
    File getFile();
    int getRank();
;

我阅读了有关此错误的信息,并尝试添加默认构造函数Square()Location(),但没有成功。

【问题讨论】:

您声明的构造函数采用 value 的第二个参数(即Location),而不是指向与您的调用代码试图调用相同的指针。 您应该在问题中发布minimal reproducible example 和错误消息。但是,很明显,您尝试传递 Location*(指向 Location 的指针)而函数采用 Location 少用 new 有助于 99.99% 的情况。 【参考方案1】:

您正在构造一个指针 (Location*),而不是一个对象 (Location),这就是构造函数不匹配的原因。

删除new:

Square newSquare = Square(currentColor, Location(file,i));

【讨论】:

以上是关于错误:没有调用“Square::Square(Square Color &,Location*)”的匹配函数的主要内容,如果未能解决你的问题,请参考以下文章

错误 TS2349:无法调用其类型缺少调用签名的表达式。类型 ' ; ' 没有兼容的调用签名

C语言调用函数发生段错误,发生段错误的函数是没有执行就段错误了

打字稿路由错误 - 没有重载匹配此调用

UIKit 错误? viewWillAppear 在应该被调用时没有被调用 [关闭]

构建时没有调用方法但没有错误

在 Swift 中调用实例方法错误消息没有完全匹配