2013-04-07 82 views
-1

我需要实现一个使用模板为任何数据类型T服务的队列,而我需要实现的一个函数称为T getFirst(),它返回第一个节点的值 我的原始方法是:C++模板返回值

T getFirst(){ 
    T returnValue = _first->_data; 
    return returnValue; 
} 

我发现这是不行的,如果我叫

Queue<int> q; 
q.add(2); 
cout << Q.getFirst() << endl; 

输出是一些垃圾。 什么惊人的是,如果我简化代码:

T getFirst(){ 
    return _first->_data; 
} 

它的作品!为什么???有人可以解释。我需要第一种方法的原因是后来我需要实现removeFirst(),我可能需要临时保存数据。谢谢很多家伙!

+1

如何在地球上'返回getFirst;'编译? – mfontanini 2013-04-07 16:55:20

+0

对不起,家伙,它的错字,它现在已被修复,但仍然,为什么它不工作! – user1819047 2013-04-07 17:10:28

+0

我们需要看看其余的实现......它不起作用的最可能的原因是'_first - > _ data'是垃圾。 – 2013-04-07 17:22:21

回答

3

看起来你真的想:

return returnValue; 
+0

对,对不起,这是一个错字,但问题依然存在 – user1819047 2013-04-07 17:10:02

1

这里有错误:

T getFirst(){ 
    T returnValue = _first->_data; 
    return getFirst; //^^^You return function name? 
} 

应该

T getFirst(){ 
    T returnValue = _first->_data; 
    return returnValue ; 
}