2013-10-26 92 views
0

所以我有一個Queue(由鏈表實現)充滿了「Car」對象。 我的主要目標是根據對象的「num」參數將隊列中的每個對象轉移到堆棧中。從隊列中移動對象到堆棧

在其構造函數中的「Car」對象的參數之一是「num」。 我想這樣說

if(the object @ head of queue's "num" == 2) 
{ 
Stack1.push(queue.remove()); 
} 

,但它不會讓我做 「如果(queue.peek()== NUM​​ 2」)

所以任何想法? (順便提一下,它的Java版本的隊列不是自定義版本)。

+1

*爲什麼*它不會讓你這樣做?你遇到了什麼錯誤? – templatetypedef

+0

你需要向我們展示你的'Car'類和可能的'peek'的實現。我猜''Car'中的'num'屬性是不可訪問的,但是你沒有提供足夠的信息來確定。 – Aurand

回答

0

您可能沒有正確地使用泛型,讓編譯器知道您正在嘗試做什麼是好的。即你或許會說一樣的東西:

Queue cars = ...; 
if (cars.peek().num == 2) ... 

它等同於

Queue cars = ...; 
Object car = cars.peek(); 
if (car.num == 2) ... 

應該是顯而易見的,不能工作,因爲Object沒有一個num場。相反,你可能想:

Queue<Car> cars = ...; 
if (cars.peek().num == 2) ... 

這將是喜歡說

Queue<Car> cars = ...; 
Car car = cars.peek(); 
if (car.num == 2) ... 

這是更爲合理的。編譯器類型參數<Car>讓編譯器知道這個Queue可以只有包含Car對象,因此可以安全地訪問其上的num字段。

+0

不,我做了完全相同的事情,它仍然不會讓我訪問它的參數。 – user2855405

+0

然後,你必須添加更多的信息到你的問題。這僅僅是基於所提供的有限信息的猜測。 –