这段代码有什么问题,我接受上面的错误?
提亚
#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() 发布于 2011-03-22 17:59:52
PositionInfo是一个类。GetBallDistToTeammate()是一种方法。
给定函数的名称和参数的数量(一个),我建议static方法不能使用该信息计算距离。
因此,您可能需要构造一个PositionInfo实例(让我们称其为player_position),可能是作为DecisionTree的成员,并假定在其上调用其他方法来设置其位置(在您的编辑中,其位置是在构造函数PositionInfo::PositionInfo()中设置的,该构造函数至少接受一个参数)。
然后,在DecisionTree::Decision()中,您可以调用player_position.GetBallDistToTeammate(5)并返回数米。
发布于 2011-03-22 17:46:54
类名不是主表达式。您应该创建一个PositionInfo类型的对象,并使用它来调用GetBallDistToTeammate或使用PositionInfo::。
发布于 2011-03-22 17:46:03
是因为它应该是PositionInfo::GetBallDistToTeammate(5)吗?我假设这是一个静态函数。在Java/C#中使用.,在C++中使用::来访问静态成员。
回答您的编辑问题
看起来PositionInfo::GetBallDistToTeamMate不是一个静态成员函数。您需要一个position info实例(例如,该类型的变量)来调用该方法。看起来您的函数中没有一个,所以可能有一个作为DecisionTree的成员?在没有更多信息的情况下很难判断。
https://stackoverflow.com/questions/5389304
复制相似问题