我有以下情况
cpp
文件:
#include <Player.h>
Ball::Ball(GLint x, GLint y, Player* bottomPlayer, Player* topPlayer)
{
this->x = x;
this->y = y;
}
头文件:
class Ball
{
public:
Ball(GLint x, GLint y, Player* bottomPlayer, Player* topPlayer);
private:
Player* bottomPlayer, topPlayer;
}
另一个cpp
文件:
#include "Player.h"
Player::Player(GLint windowWidth, GLint windowHeight, GLint playerLength)
{
// initialization
}
并且出现以下错误:
没有用于调用“ Player :: Player()”的匹配函数
我不知道这个错误是什么意思...为什么会认为我的构造函数是一个函数或类似的东西...
答案 0 :(得分:0)
为什么会认为我的构造函数是一个函数或类似的东西...
因为构造函数是函数。
我不知道这个错误是什么意思...
这表示您尝试默认构造类Player
的实例,尽管该类不是默认构造的。如果类没有默认构造函数,则该类不是默认可构造的,即,没有没有参数即可调用的构造函数。
要修复此问题,请执行以下操作:
Player
Player
定义默认的构造函数private: Player* bottomPlayer, topPlayer;
这声明了播放器指针bottomPlayer
和播放器实例(不是指针)topPlayer
。由于您没有在成员初始化列表中显式初始化topPlayer
,因此默认情况下初始化成员。这会导致错误。