我遇到上述错误的代码问题是什么?
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()
答案 0 :(得分:4)
类名不是主要表达式。您应该创建PositionInfo
类型的对象,并使用该对象来调用GetBallDistToTeammate
或使用PositionInfo::
。
答案 1 :(得分:2)
是因为它应该是PositionInfo::GetBallDistToTeammate(5)
吗?我假设这是一个静态函数。 {/ 1}}在Java / C#中使用,.
在C ++中用于访问静态成员。
回应您的编辑问题
看起来::
不是静态成员函数。您将需要一个位置信息实例(例如该类型的变量)来调用该方法。看起来你在函数中没有一个,所以也许有PositionInfo::GetBallDistToTeamMate
成员?没有更多信息就很难说清楚。
答案 2 :(得分:1)
PositionInfo
是一个班级。 GetBallDistToTeammate()
是一种方法。
鉴于函数的名称和参数的数量(一),我建议static
方法无法计算与该信息的距离。
因此你需要构建一个PositionInfo
的实例(让我们称之为player_position
),可能是你DecisionTree
的成员,并且可能会调用其他方法设置它它的位置(来自你的编辑,它的位置在构造函数 PositionInfo::PositionInfo()
中设置,它至少 一个参数)。
然后在DecisionTree::Decision()
中,您可以拨打player_position.GetBallDistToTeammate(5)
并获得一些米。