2013-04-07 111 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 ; 
}