2017-05-29 108 views
-2

所以我的代碼我想做一個矢量,它接受來自派生類「PLATFORM」的任何對象。 所以平臺是我的基礎班,我擁有書籍,遊戲,電視節目和其他東西。我想把所有這些放在一個向量中。它需要這樣做,所以沒有其他辦法可以去做。如何在向量中存儲多個類的不同對象?

所以我想要一個載體包含...書籍中的對象,遊戲中的對象等......我一直在論壇上閱讀,我一直在看人們建議使用boost ::任何或boost :: variant。我正試圖避免目前使用提升。

我看到了這樣多的建議...... 做這樣的事情

Book tmpBook; 
tmpBook.setName("ERAGON"); 
//I do the above just to get a object to use 


vector<Platforms*> platforms 
platforms.push_back(tmpBook) 
cout << platforms.at(0).getName() << endl; 

我期望看到它打印出龍騎士,但我得到了一個錯誤... 錯誤:請求成員「的getName 'in'platforms.std :: vector < _Tp,_Alloc> :: at>(0u)',這是指針類型...並且從這裏開始。

我覺得我失去了一些非常重要的東西,所以請幫助!

我的類通過使用getName()和setName()虛方法和受保護的字符串名稱變量的基類「Platform」進行簡單設置。

派生類基本上只有它們的類的setName()和getName()版本。

後來,我計劃添加更多的細節,進一步定義每個類,爲它們各自的對象提供更多的定義特徵。就像有一個頁碼,這樣...

一本書,我也看到了使用sharedptr的建議,但它看起來是那麼複雜......

+1

'cout << platforms.at(0) - > getName()<< endl;' –

+0

謝謝你,這就是我所缺少的,我感謝你的幫助。 – Cameron

回答

-3

嘗試

Vector<Platforms> platforms 

我不能那麼你爲什麼要在向量中使用指針

+1

_「我不知道你爲什麼在向量中使用指針」_因爲'Platforms'是問題中提到的(可能是抽象的)基類。 –

+1

有時,您似乎很難從一開始就發表評論,但不要濫用相關問題。獲得您發表評論的權利。 – Aziuth

相關問題