2011-11-16 160 views
0

我有一個向量是指針的對象,但是當我打印出內容時,我得到內存地址,所以我要將矢量複製到字符串矢量,但複製,分配或交換的方法don' t似乎工作。從矢量的指針

std::vector<BmvMessage*> MsgName; 
//std::vector<BmvMessage> MsgNameCopy; 
//std::string* a; 
MsgName = retrieveMessageNameID(Msg).push_onto(MsgName); 
std::vector<BmvMessage*>::iterator it; 

for (it = MsgName.begin(); it != MsgName.end(); ++it) { 
    DCS_LOG_DEBUG("it is not empty"); 
    MsgName.swap(MsgNameCopy); 
} 

我在做什麼錯了?

+0

如果我寫DCS_LOG_DEBUG(「元素」 << MsgName [0])的存儲器地址顯示 – CodersSC

+3

*「我有其是指針,但是當我打印內容出來我得到的存儲器地址的對象的載體」 * - 爲什麼在那句話中有*但*?一個指針存儲一個內存地址,你期望它打印什麼? –

+0

是的,這是真的我想我應該重新說話,當我尊重它似乎並不工作,所以你有什麼建議嗎? – CodersSC

回答

2

迭代器就像指針一樣,所以'它'就像一個指向指針的指針 - 尊重它,你應該回到原來的指針。

it // Is like a pointer to a BmvMessage* or BmvMessage** 
*it // Is a BmvMessage* 
**it // Is a BmvMessage 
+0

好吧我會嘗試DCS_LOG_DEBUG(「元素」<< **它),似乎並沒有工作,雖然它只有*它符合,但只打印出內存adrres,有沒有辦法如何將元素複製到一個字符串向量? – CodersSC

+0

您有一個重載操作符<<用於打印BmvMessage結構體/類的權利? C++不能奇蹟般地輸出用戶創建的類/結構體 - 你必須編寫自己的輸出運算符 –

+0

創建你自己的輸出運算符,你有沒有任何這樣的websight鏈接的例子? – CodersSC