Сообщение об ошибке не требует пояснений. Не существует перегруженной версии 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`, чтобы извлечь значения перед их использованием.