Компилятор c ++ не распознает уже объявленную строковую функцию C2039 - PullRequest
0 голосов
/ 20 апреля 2020

Я получаю сообщение об ошибке 'convertInfixToPostfix' is not a member of stack, хотя я уже объявил об этом в файле stack.h.

Это мой файл stack.h:

class stack{
    string convertInfixToPostfix(string infix);
}

и его определение находится в файле function.cpp:

string stack::convertInfixToPostfix(string infix)
{
    string postfix;
    string infixExpression;
    cout << "Enter your infix expression : " << endl;
    getline(cin, infixExpression);
    return postfix;
}

Функция вызывается из main.cpp:

cout << " evaluation of postfix :" << s.convertInfixToPostfix();

1 Ответ

1 голос
/ 20 апреля 2020

Сколько параметров у convertInfixToPostfix есть?

string convertInfixToPostfix(string infix);

Сколько параметров вы указали?

s.convertInfixToPostfix()

Надеюсь, вы видите проблему.

Не то, о чем вы спрашивали, но из небольшой предоставленной информации я бы сказал, что у вас проблемы с дизайном. Преобразование инфикса в постфикс - это процесс, который использует стек. Но это не значит, что процесс должен быть членом класса стека. У стека есть много применений помимо преобразования инфикса в постфикс, и большинство пользователей стека не будут заинтересованы в преобразовании инфикса в постфикс.

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

Это проблема проектирования классов, которая, вероятно, сейчас не в центре вашего внимания, но это важная проблема, как вы поймете как вы становитесь более опытным.

...