首页 > 解决方案 > c++ 编译器无法识别已声明的字符串函数 C2039

问题描述

我收到一个错误'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();

标签: c++stringfunctionparametersarguments

解决方案


有多少参数convertInfixToPostfix

string convertInfixToPostfix(string infix);

你提供了多少参数?

s.convertInfixToPostfix()

我希望你能看到问题。

不是你问的问题,而是根据提供的少量信息,我会说你有一个设计问题。将中缀转换为后缀是一个使用堆栈的过程。但这并不意味着该进程应该是堆栈类的成员。除了将中缀转换为后缀之外,堆栈还有许多用途,并且堆栈的大多数用户不会对中缀到后缀的转换感兴趣。

因此,仅使用常见的堆栈操作编写堆栈类,然后在单独的代码段中使用该堆栈类,该代码执行中缀到后缀的转换。

这是一个班级设计问题,现在可能不在你的脑海中,但它是一个重要的问题,随着你的经验越来越丰富,你会意识到这一点。


推荐阅读