2012-03-08 14 views
0

質問のタイトルはエラーそのものですが、ここエラー:タイプ 'char(CharStack ::)(const)throw(CharStack :: Underflow)'の引数が 'char'と一致しません

error: argument of type ‘char (CharStack::)()const throw (CharStack::Underflow)’ does not match ‘char’ 

は私が使用していたコードファイルである:私は私が使用する2つの例外を定義するヘッダファイルで

#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{}; 

私は抜粋を扱っていないので、私はそれが前提だが、私はこの現状でそれをどのように処理するのかは分からない。

答えて

2
return cur -> info; 

ありがとうはcharを返しinfoメンバ関数ですか?次に、使用する必要があります。そうしないと、ポインタ・ツー・メンバー関数ではなく、文字を返すしている

return cur -> info(); 

このために同じ

char top = stack -> top; 

stack->topstack->top()stackオブジェクトのtop関数への呼び出しで、メンバ関数ポインタです。

empty()が真の場合、top関数は何も返しません。これは不正です。 charを返すか、スローする必要がありますが、返すこともスローすることもなく機能を残すことは間違っています。

+0

申し訳ありませんが、 "Elem"は2つの変数を持つ構造体です: Elem * next;とchar情報; Elem - > infoは、構造体に格納されているcharを取得しています。私はより明確にすべきだった。 – Joshua

+0

メンバ関数である 'stack-> top'の部分はまだ保持されています。 – Mat

関連する問題