2011-03-22 93 views
0

这段代码的问题,我采取上述错误?错误:在'。'之前预期的初级表达式令牌

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回应:

class Positi onInfo我们有这样的:

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

您需要*阅读''PositionInfo.h''中的代码*以找出PositionInfo的构造函数的参数并提供这些参数,按照我的答案。 – Johnsyweb 2011-03-22 10:54:08

+0

'PositionInfo Player_position(WorldState * pWorldState,InfoState * pInfoState);'是不正确的语法。你需要在这里传递指向有效对象的指针(假设'PositionInfo Player_position(NULL,NULL);'将不会产生任何有用的结果 – Johnsyweb 2011-03-22 11:42:44

回答

1

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

鉴于函数名称和参数个数(一),我建议static方法将无法计算与该信息的距离。

因此你需要大概构造的PositionInfo(我们称之为player_position)的实例作为DecisionTree的一员,想必呼吁它的一些其他方法来设置其位置(从您的编辑,其位置设置在的构造函数中PositionInfo::PositionInfo(),其中至少有一个参数)。

然后在DecisionTree::Decision(),你可以打电话player_position.GetBallDistToTeammate(5),并得到一些米。

+0

谢谢,但我不明白你在这句话中的含义:调用其他一些方法设置其position.i编辑我的问题,PLZ看是否正确或缺少其他 – Arash 2011-03-22 10:09:32

+0

@arash:我已经更新了我的答案。你需要找出'PositionInfo :: PositionInfo()'的参数是什么,并构造'PositionInfo Player_position('* <这里的正确参数> *')'。 – Johnsyweb 2011-03-22 10:22:02

+0

我编辑了我的问题,请检查,谢谢 – Arash 2011-03-22 11:16:49

2

是因为它应该是PositionInfo::GetBallDistToTeammate(5)?我认为这是一个静态函数。 .用于C++中的Java/C#和::以访问静态成员。

在回答您的问题编辑

看起来PositionInfo::GetBallDistToTeamMate不是一个静态成员函数。您需要一个位置信息实例(例如该类型的变量)来调用该方法。它看起来不像你在函数中有一个,所以也许有一个作为DecisionTree的成员?没有更多信息很难说。

4

类名不是主表达式。您应该创建一个类型为PositionInfo的对象,并使用该对象调用GetBallDistToTeammate或使用PositionInfo::

相关问题