C ++通过构造函数将类指针传递给另一个类

时间:2018-10-21 11:21:01

标签: c++ oop

我有以下情况

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()”的匹配函数

我不知道这个错误是什么意思...为什么会认为我的构造函数是一个函数或类似的东西...

1 个答案:

答案 0 :(得分:0)

  

为什么会认为我的构造函数是一个函数或类似的东西...

因为构造函数是函数。

  

我不知道这个错误是什么意思...

这表示您尝试默认构造类Player的实例,尽管该类不是默认构造的。如果类没有默认构造函数,则该类不是默认可构造的,即,没有没有参数即可调用的构造函数。

要修复此问题,请执行以下操作:

  • 不是默认构造Player
  • Player定义默认的构造函数
private:
    Player* bottomPlayer, topPlayer;

这声明了播放器指针bottomPlayer和播放器实例(不是指针)topPlayer。由于您没有在成员初始化列表中显式初始化topPlayer,因此默认情况下初始化成员。这会导致错误。