首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:应为‘.’前的主表达式令牌

错误:应为‘.’前的主表达式令牌
EN

Stack Overflow用户
提问于 2011-03-22 17:44:17
回答 3查看 1.7K关注 0票数 0

这段代码有什么问题,我接受上面的错误?

提亚

代码语言:javascript
复制
#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类中,我们有这样的类:

代码语言:javascript
复制
    PositionInfo(WorldState *pWorldState, InfoState *pInfoState);

我把它放在DecisionTree中如下:

代码语言:javascript
复制
    PositionInfo Player_position(WorldState *pWorldState, InfoState *pInfoState);

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-22 17:59:52

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

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

因此,您可能需要构造一个PositionInfo实例(让我们称其为player_position),可能是作为DecisionTree的成员,并假定在其上调用其他方法来设置其位置(在您的编辑中,其位置是在构造函数PositionInfo::PositionInfo()中设置的,该构造函数至少接受一个参数)。

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

票数 1
EN

Stack Overflow用户

发布于 2011-03-22 17:46:54

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

票数 4
EN

Stack Overflow用户

发布于 2011-03-22 17:46:03

是因为它应该是PositionInfo::GetBallDistToTeammate(5)吗?我假设这是一个静态函数。在Java/C#中使用.,在C++中使用::来访问静态成员。

回答您的编辑问题

看起来PositionInfo::GetBallDistToTeamMate不是一个静态成员函数。您需要一个position info实例(例如,该类型的变量)来调用该方法。看起来您的函数中没有一个,所以可能有一个作为DecisionTree的成员?在没有更多信息的情况下很难判断。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5389304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档