2011-11-16 126 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