2014-02-14 29 views
0

我不斷收到以下錯誤:錯誤:調用沒有匹配的函數「堆棧:: PEEK()」錯誤:沒有匹配函數調用「堆棧<int> ::皮克()」

我是新到C++,我不知道爲什麼我得到錯誤

這是我的Peek()函數。

int Peek(T data) 
{ 
    if(IsEmpty()) 
     return -1; 
    else 
     return top -> data; 

} 

這是我的main()函數。

int main() 
{ 
    Stack<int> s1; 

    cout << "*declare stack s1\ns1=" << s1 << endl; // stack initially set to 0 
    cout << "s1.Size()=" << s1.Size() << endl; 
    cout << "s1.IsEmpty()=" << ((s1.IsEmpty()) ? "T" : "F") << endl; 
    cout << "s1.IsFull()=" << ((s1.IsFull()) ? "T" : "F") << endl; 
    cout << "s1.Peek()=" << s1.Peek() << endl; 
    cout << endl; 

    Stack<char> s4; 

    for (char c='a'; c<='z'; c++)s4.Push(c); 
    cout << "s4=" << s4 << endl; 
    cout << "s4.Size()=" << s4.Size() << endl; 
    cout << "s4.IsEmpty()=" << ((s4.IsEmpty()) ? "T" : "F") << endl; 
    cout << "s4.IsFull()=" << ((s4.IsFull()) ? "T" : "F") << endl; 
    cout << "s4.Peek()=" << s4.Peek() << endl; 
} 

我得到每當皮克函數被調用主,所以我在想,如果有人可以幫助我這個錯誤。

+1

'Peek'實際上是Stack的方法嗎?看起來你只是定義了一個不相關的功能。 – user2357112

+0

請包含更多的代碼,甚至更好地使用相同的行爲 –

回答

0

您定義了一個Peek方法,但不是Stack :: Peek。你的方法應該有這個簽名:int Stack::Peek(T data)

0

因爲你沒有任何參數地調用它。您聲明:

int Peek(T data) 

你調用:

s4.Peek() 

確實是一個堆棧數據類型並不需要的一個參數窺視功能(也不您使用它)。你應該修改你的原始功能到int Peek()

0

你的功能山頂被聲明爲一個參數

int Peek(T data); 

但是你怎麼稱呼它不帶任何參數

cout << "s1.Peek()=" << s1.Peek() << endl; 

所以編譯器不知道與不帶參數的名字山頂功能。

相關問題