【问题标题】:c++ compiler isn't recognizing already declared string function C2039c++ 编译器无法识别已声明的字符串函数 C2039
【发布时间】:2020-08-02 12:57:30
【问题描述】:

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

【问题讨论】:

  • 函数需要一个参数。
  • 请将所有代码收集到一个包含所需内容的 sn-p
  • //stack.h 文件类堆栈 { int *A;最大整数;诠释顶部;公共:堆栈(){顶部= -1;最大值 = 0; A = nullptr; } string convertInfixToPostfix(字符串中缀); int top_();无效推送(字符 c);布尔 isEmpty();字符弹出();无效显示(); ~stack() { } };

标签: c++ string function parameters arguments


【解决方案1】:

convertInfixToPostfix有多少个参数?

string convertInfixToPostfix(string infix);

你提供了多少参数?

s.convertInfixToPostfix()

希望你能看到问题。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多