错误:在'。'标记之前预期的primary-expression

时间:2011-03-22 09:44:17

标签: c++ oop

我遇到上述错误的代码问题是什么?

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() 

3 个答案:

答案 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)并获得一些米。