问题的标题是错误本身,但我也将其包含在下面:
error: argument of type ‘char (CharStack::)()const throw (CharStack::Underflow)’ does not match ‘char’
这是我正在使用的代码文件:
#include <iostream>
#include "CharStack.h"
using namespace std;
// returns top value on stack
// throws exception if empty
//
// O(n)
char CharStack::top() const throw( Underflow )
{
Elem * cur = head;
if( !empty() )
{
while( cur && cur -> next )
cur = cur -> next;
return cur -> info;
}
}
int main()
{
CharStack * stack = new CharStack();
char top = stack -> top;
stack -> push( 't' );
stack -> push( 'e' );
stack -> push( 's' );
stack -> push( 't' );
stack -> push( 'i' );
stack -> push( 'n' );
stack -> push( 'g' );
stack -> output( cout );
delete stack;
}
在头文件中,我定义了我使用的两个例外,我将遵循以下示例:
public:
// exceptions
class Overflow{};
class Underflow{};
我认为这是因为我没有处理摘录,但在目前的情况下我不知道如何处理它。
谢谢
答案 0 :(得分:2)
return cur -> info;
info
是否为返回char
的成员函数?然后你应该使用:
return cur -> info();
否则你将返回指向成员的指针函数,而不是char。
同样如此:
char top = stack -> top;
stack->top
是成员函数指针,stack->top()
是对top
对象的stack
函数的调用。
顺便说一句,如果top
为真,则empty()
函数不会返回任何内容,这是非法的。你需要返回一个char
或者抛出,但离开函数而不返回或抛出是不正确的。