2014-02-14 56 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; 

所以编译器不知道与不带参数的名字山顶功能。

相关问题