2012-11-07 35 views
-3

我似乎無法弄清楚爲什麼這不起作用。我試圖做一個指針類型的隊列,它失敗了。我有一個教室,我想使指針間的隊列..所以我所做的:在C++中製作一個STL指針類型隊列

queue<*Room> bfsRooms; 

這給我的錯誤:

`*' cannot appear in a constant-expression

這是否意味着它是不可能的創建一個STL指針隊列?

+0

指針的Q值是多少?你的意思是指針的常量嗎? – billz

+2

請向我們顯示您的代碼。請注意'隊列'不是一個指針隊列,除非房間是指針類型的'typedef'。 – pndc

+0

@billz是「指針的常量」集體名詞嗎? – Caribou

回答

5

不,它應該沒問題,你應該確實鏈接確切的代碼和確切的錯誤,所以我們可以幫助你更好。

也就是說指針的隊列將是這個樣子:

Room r; 
std::queue<Room*> rooms; 
rooms.push(&r); 

編輯:值得注意的是,如果這些指針擁有自己的對象,他們指向你真的應該封裝指針的智能指針,像這樣:

std::queue<std::unique_ptr<Room>> rooms; 

這遵守RAII的原則,並會自動清理資源。

+0

好的,謝謝,我是C++ noob,並沒有意識到它應該是Room *而不是* Room,這解決了我的問題。我覺得啞巴哈哈。 –

+0

@ThomasColgrove如果你可以標記它是正確的,如果它有幫助,所以它可以幫助其他人在未來 – 111111