发生上述错误的此代码有什么问题?
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)
并返回许多米。