ошибка: ожидаемое первичное выражение перед токеном. - PullRequest
0 голосов
/ 22 марта 2011

В чем проблема этого кода, который я принимаю выше ошибка?

ТИА

#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);

}
}

я изменил код, теперь я получил эту ошибку:

ошибка: нет соответствующей функции для вызова for 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 ]

4 голосов
/ 22 марта 2011

Имя класса не является основным выражением. Вы должны либо создать объект типа PositionInfo и использовать его для вызова GetBallDistToTeammate, либо использовать PositionInfo::.

2 голосов
/ 22 марта 2011

Это потому, что должно быть PositionInfo::GetBallDistToTeammate(5)? Я предполагаю, что это статическая функция. . используется в Java / C # и :: в C ++ для доступа к статическим членам.

В ответ на ваш вопрос для редактирования

Похоже, PositionInfo::GetBallDistToTeamMate не является статической функцией-членом. Вам понадобится экземпляр информации о положении (например, переменная этого типа) для вызова метода. Это не похоже на то, что у вас есть один в функции, так что, может быть, есть один из членов DecisionTree? Трудно сказать без дополнительной информации.

1 голос
/ 22 марта 2011

PositionInfo это класс.GetBallDistToTeammate() - это метод.

Учитывая имя функции и количество аргументов (один), я бы предположил, что метод static не сможет рассчитать расстояние с этой информацией.

Таким образом, вам нужно создать экземпляр PositionInfo (назовем его player_position), вероятно, как член вашего DecisionTree и предположительно вызвать какой-то другой метод для установки его позиции (из вашего редактирования его позиция задается в конструкторе PositionInfo::PositionInfo(), который принимает не менее один аргумент).

Тогда в DecisionTree::Decision() вы можете вызвать player_position.GetBallDistToTeammate(5) и получите несколько метров назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...