繁体   English   中英

重载功能错误消息

[英]Overload Function Error Messages

该程序应该通过仅使用一个变量和任意数量的堆栈来检查字符串是否是回文。 它给了我许多有关重载函数的错误消息,但是我看不到重载地方。 还是我声明堆栈错误? 我在错误消息所引用的代码行之后对其进行了注释。 谢谢!

int main()
{
    stack <char> stackA;
    stack <char> stackB;
    stack <char> stackC;

    char avariable;
    cout << "Enter a string: ";
    avariable = cin.get();
    while(avariable != '\n')
    {
        if(avariable != ' ')
        {

            stackA.push(avariable);
            stackB.push(avariable);
            avariable = cin.get();
        }}

    stackC.push('$');

    while(!stackB.empty())
    {
        avariable = stackB.top; //error, cannot resolve overloaded function 'top' based on conversion to type 'char'
        stackC.push(avariable);
        stackB.pop; //statement cannot resolve address of overloaded function
    }

    avariable = '$';
    stackC.push('$');

    while(!stackA.empty())
    {
        if(avariable == stackC.top) //invalid operands of type 'char' and <unresolved overloaded function type>' to binary 'operator=='
        {
            avariable = stackA.top; //cannot resolve overloaded function 'top' based on conversion to type 'char'
            stackA.pop; //cannot resolve address of overloaded function 
            stackC.pop; //cannot resolve address of overloaded function 
        }
        else
        {
            cout << "The string of characters entered is not a palindrome." << endl;
        }
    }

    if (stackC.top == '$') //invalid operands of type 'char' and <unresolved overloaded function type>' to binary 'operator=='
    {
        cout <<"The string of characters entered is a palindrome." << endl;
    }

}

std::stack模板类仅定义了成员函数 top()pop() 您正在尝试将它们作为公共成员对象访问。 即使未传递任何参数,函数调用也需要使用括号。

只需将所有出现的.top.pop分别替换为.top().pop() ,您的程序至少应该编译

另外,请习惯使用std::前缀,而不要using namespace std包括整个std命名using namespace std 从长远来看,它将为您节省潜在的麻烦。

要调用函数,需要括号:

stackB.top()
stackB.pop()

由于toppop都不带参数,因此括号为空,但仍需要。

例如,这与完成stackA.empty()cin.get()地方没有什么不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM