нет вызова соответствующей функции, нет известного преобразования - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь реализовать стек, используя массив. Я получаю в основном при попытке передать стек в аргумент после оператора else. Что я недопонимаю? Любая помощь будет оценена!

Ошибка в основном при stack(input, &stack)

Нет соответствующего вызова функции ‘calc (std :: string &, MyStack *)

Не известно преобразование для аргумента 2 из «Stack *» в «int &».

1 Ответ

1 голос
/ 27 июня 2019

Сообщение об ошибке не требует пояснений. Не существует перегруженной версии calc(), соответствующей параметрам, которые вы ей передаете. Вы объявили calc() как:

void calc(const string &input, int &stack)

В сообщении об ошибке говорится, что вы передаете указатель MyStack*, где вместо него ожидается int.

stack.calc(input, &stack); // <-- stack is a MyStack, so &stack is a MyStack*

В этом отношении ваша реализация calc() даже не USE параметр stack вообще! Так что просто удалите все вместе:

void calc(const string &input)

...

stack.calc(input);

Нет никаких оснований для main() передавать свой объект stack в качестве параметра, когда calc() уже имеет доступ к объекту через его неявный параметр this.

Кроме того, локальные переменные x и y внутри calc() не инициализируются никакими значениями, прежде чем они будут использованы для вычисления result. Вы, вероятно, хотели * проанализировать the input`, чтобы извлечь значения перед их использованием.

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