CPP, как передать объект типа state_t * в функцию - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь реализовать эвристический разрыв в cpp. Вот подпись моей функции:

get_gap_heuristic(state_t *state, string direction) 

Вот фрагмент кода в функции:

state_t goal_state;
    queue<state_t> goal_states = get_goal_states();
    int min_gap = -1;
    int gap;
    while (!goal_states.empty())
    {
        goal_state = goal_states.front();
        goal_states.pop();
        gap = get_gap(&state, goal_state);

где состояние - это параметр метода, как показано на подписи. Когда я пытаюсь выполнить свой код, я получаю следующую ошибку:

a_star.cpp: In function ‘int get_gap_heuristic(state_t*, std::string)’:
a_star.cpp:73:41: error: cannot convert ‘state_t**’ to ‘state_t*’ for argument ‘1’ to ‘int get_gap(state_t*, state_t*)’
         gap = get_gap(&state, goal_state);
                                     ^

make: *** [Makefile: 32: pancake.astar] Ошибка 1

Я пытался заменить goal_state всем, т. Е. :

  1. просто цель_стата
  2. & goal_state
  3. * goal_state.

безрезультатно. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 10 сентября 2018

Так как state является указателем на state_t, В строке ниже:

gap = get_gap(&state, goal_state);

&state будет указателем на указатель до state_t.

А из сообщения об ошибке: Первый параметр get_gap является указателем на state_t. Поэтому вы должны назвать это так:

gap = get_gap(state, goal_state);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...