[英]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()
由于top
和pop
都不带参数,因此括号为空,但仍需要。
例如,这与完成stackA.empty()
或cin.get()
地方没有什么不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.