发生上述错误的此代码有什么问题?

TIA

#include"PositionInfo.h"

bool DecisionTree::Decision(Agent & agent) {

PositionInfo Player_position;
double metr=Player_position.GetBallDistToTeammate(5);

if (agent.GetSelf().IsKickable()) {

Kicker::instance().KickBall(agent,agent.GetWorldState().GetTeammate(5).GetPos(),metr);

}
}


我现在更改了代码,但出现了以下错误:

错误:没有匹配的函数可以调用“ PositionInfo :: PositionInfo()”

编辑:

根据johnsyweb的回复:

在PositionInfo类中,我们是这样的:

    PositionInfo(WorldState *pWorldState, InfoState *pInfoState);


我把它像这样放在DecisionTree中:

    PositionInfo Player_position(WorldState *pWorldState, InfoState *pInfoState);

   double met=Player_position//but here IDE doesnt let me to put GetBallDistToTeammate()

最佳答案

PositionInfo是一类。 GetBallDistToTeammate()是一种方法。

给定函数的名称和参数的数量(一个),我建议static方法将无法使用该信息来计算距离。

这样,您可能需要作为PositionInfo的成员构造player_position的实例(我们称其为DecisionTree),并大概在其上调用其他方法来设置其位置(通过编辑,其位置)在构造函数PositionInfo::PositionInfo()中设置,该构造函数至少包含一个参数)。

然后在DecisionTree::Decision()中,您可以调用player_position.GetBallDistToTeammate(5)并返回许多米。

08-26 03:29