2014-06-05 60 views
-2

我想在C++中創建一個列表,但是當我構建我的代碼時它給了我錯誤。錯誤在C++中創建列表

這裏是我的代碼創建我的自定義列表:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > ; 

在控制檯上的錯誤時這樣說:

錯誤:轉換從‘std::list<osg::ref_ptr<osg::PositionAttitudeTransform> >*’到非標量型‘std::list<osg::ref_ptr<osg::PositionAttitudeTransform> >’要求

如何我要這樣做嗎?

+1

C++不是Java。 – PaulMcKenzie

+0

相同的想法:http://stackoverflow.com/questions/10564706/need-one-object-how-to-use-new – chris

回答

-2

問題解決了加入「*」的清單申報,C++是如此惱人的笑

+0

我不會打電話解決。寧可除掉'='和除了分號之外的所有東西。請拿一本書。另外考慮使用'std :: vector'。無論你在做什麼,機會都會超過'std :: list'。如果有的話,我會說不得不重複那個長類型名稱是令人討厭的部分,你不必這樣做。 – chris

+0

'C++太麻煩了'當你發現你有內存泄漏,因爲你使用了你的「解決方案」會更加惱人。 – PaulMcKenzie

1

你正在創建一個std ::列表< ...>不是一個std ::列表< .. 。* *因此沒有理由使用new爲其分配存儲空間。編譯器會爲你做這個。

2

正如我的評論所述,C++不是Java。

所有你需要的是這樣的:

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> > bulletList; 

如果由於某種原因,你真的想動態創建一個列表,然後你用一個指針。

std::list< osg::ref_ptr<osg::PositionAttitudeTransform> >* bulletList = new std::list< osg::ref_ptr<osg::PositionAttitudeTransform> >(); 

那麼你現在頭痛的是要確保delete被調用,否則會出現內存泄漏。