gpt4 book ai didi

C++ 返回类型与函数类型不匹配

转载 作者:行者123 更新时间:2023-11-30 03:01:52 28 4
gpt4 key购买 nike

当我试图在我的函数中返回一个指向播放器的指针时,出现错误“返回类型与函数类型不匹配”。编译器的错误是:

'&' : illegal operation on bound member function expression

CPlayer* CLevel::getPlayer()
{
return &player;
}

在头文件中,这定义为:

private:
CPlayer player(Point p, CGame* game);

public:
CPlayer* getPlayer();

关于我为什么会收到此错误以及如何删除它的任何想法?

编辑:

关卡构造器:

CLevel::CLevel()
{
Point p;
this->game=game;
p.x=0;
p.y=0;
player(Point p, CGame* game) {};

memset(tiles, GROUND, sizeof(TileType)*GRID_HEIGHT*GRID_WIDTH);
}

Player.cpp 构造函数:

 CPlayer::CPlayer(Point pos, CGame* game)
{
this->game=game;
Point p;
p.x=0;
p.y=0;
setPosition(p);
}

最佳答案

因为在你的代码中,player 是一个私有(private)函数的名称:

private:
CPlayer player(Point p, CGame* game);

这是一个接受PointCGame* 并返回CPlayer 的函数。

声明一个你需要的CPlayer数据成员

private:
CPlayer player;

然后您可以在构造函数中对其进行初始化,例如:

CLevel(Point p, CGame* game) : player(p, game) {}

和:

CLevel() : player(Point(), game) {
this->game = .... ;
}

或者,在 C++11 中,您可以这样做:

private:
CPlayer player{Point(), nullptr}; // I am not sure where you were getting p and game in your original example

关于C++ 返回类型与函数类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com