我有這段代碼:引用向量::前的作品,但矢量::開始不
cerr << client->inventory.getMisc().front()->getName() << endl;
vector<itemPtr>::iterator it;
it = client->inventory.getMisc().begin();
cerr << (*it)->getName() << endl;
讓我解釋一下:
client
是tr1::shared_ptr
那點到具有名爲inventory
的成員的對象,該成員具有可由getMisc()
訪問的私人vector<itemPtr>
成員。 itemPtr
是tr1::shared_ptr<Item>
的typedef,getName()
返回Item
的私人std::string
成員。
本質上,client->inventory.getMisc()
歸結爲std::vector
,我試圖獲得一個迭代器到它的第一個元素。
問題是第四行段錯誤。顯然,它指向的迭代器或shared_ptr無效。我用第一個cerr語句來測試vector本身是否有效,並且它應該打印,所以我認爲它是。
有什麼我做錯了嗎?或者,你們會做什麼來調試呢?
Rahter比「解釋一下」能否提供代碼。這個網站上的人員非常善於理解代碼並弄清楚它的含義。它比英文描述更精確。 – 2010-07-09 17:56:49