C++ 重载函数错误消息
这个程序应该只使用一个变量和任意数量的堆栈来检查字符串是否是回文。它给了我一些与重载函数相关的错误消息,但我不知道我在哪里重载了它。还是我宣布堆叠错误?在错误消息中,我在它们引用的代码行之后进行了注释。谢谢C++ 重载函数错误消息,c++,overloading,C++,Overloading,这个程序应该只使用一个变量和任意数量的堆栈来检查字符串是否是回文。它给了我一些与重载函数相关的错误消息,但我不知道我在哪里重载了它。还是我宣布堆叠错误?在错误消息中,我在它们引用的代码行之后进行了注释。谢谢 int main() { stack <char> stackA; stack <char> stackB; stack <char> stackC; char avariable; cout << "
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;
}
}
intmain()
{
stackA;
堆栈B;
堆栈c;
可变性;
cout要调用函数,需要括号:
stackB.top()
stackB.pop()
由于top
和pop
都不带参数,因此括号为空,但仍然是必需的
例如,这与执行stackA.empty()
或cin.get()
时没有什么不同。要调用函数,需要括号:
stackB.top()
stackB.pop()
由于top
和pop
都不带参数,因此括号为空,但仍然是必需的
例如,这与执行stackA.empty()或
cin.get()
时没有什么不同。要调用函数,需要括号:
stackB.top()
stackB.pop()
由于top
和pop
都不带参数,因此括号为空,但仍然是必需的
例如,这与执行stackA.empty()或
cin.get()
时没有什么不同。要调用函数,需要括号:
stackB.top()
stackB.pop()
由于top
和pop
都不带参数,因此括号为空,但仍然是必需的
例如,这与您执行的stackA.empty()
或cin.get()
没有区别。模板类只有成员函数并已定义。您尝试将其作为公共成员对象访问。即使未传递任何参数,函数调用也需要使用括号
只需将所有出现的.top
和.pop
分别替换为.top()
和.pop()
,然后替换程序
另外,请习惯std::
前缀,而不要将整个std
命名空间包含在using namespace std
中。从长远来看,这将为您节省潜在的麻烦。模板类只有成员函数并已定义。您正试图将它们作为公共成员对象来访问。Function即使未传递任何参数,调用也需要使用括号
只需将所有出现的.top
和.pop
分别替换为.top()
和.pop()
,然后替换程序
另外,请习惯std::
前缀,而不要将整个std
命名空间包含在using namespace std
中。从长远来看,这将为您节省潜在的麻烦。模板类只有成员函数并已定义。您正试图将它们作为公共成员对象来访问。Function即使未传递任何参数,调用也需要使用括号
只需将所有出现的.top
和.pop
分别替换为.top()
和.pop()
,然后替换程序
另外,请习惯std::
前缀,而不要将整个std
命名空间包含在using namespace std
中。从长远来看,这将为您节省潜在的麻烦。模板类只有成员函数并已定义。您正试图将它们作为公共成员对象来访问。Function即使未传递任何参数,调用也需要使用括号
只需将所有出现的.top
和.pop
分别替换为.top()
和.pop()
,然后替换程序
另外,请习惯
std::
前缀,而不是将整个std
名称空间包含在使用名称空间std
中。从长远来看,这将为您节省潜在的麻烦。为什么您说对每个实例使用std::更好?一位教授告诉我相反的情况,尽管我不记得他解释过我谢谢!我想我应该在问之前查一下。@Neko,别担心。只要你不发重复的问题,就可以问。为什么你说对每个实例使用std::更好?一位教授告诉我相反的情况,尽管我不记得他解释过它的好处。谢谢!我想我应该哈在我问之前我已经查过了。@Neko,别担心。只要你不发重复的问题,问就可以了。为什么你说对每个实例使用std::更好?一位教授告诉我相反的话,尽管我不记得他解释过它的好处。谢谢!我想我应该在问之前查一下。@Neko,别担心.只要你不发布重复的问题,就可以提问。为什么你说对每个实例使用std::更好?一位教授告诉我相反的情况,尽管我不记得他解释过它的好处。谢谢!我想我应该在提问之前查一下。@Neko,别担心。只要你不发布重复的问题,可以问。