//.h
#include <vector>
class myclass
{
private:
    void fun();
private:
    std::vector<MY_DATA> m_data;
};//.cpp
void fun()
{
m_data.push_back(&data1);
m_data.push_back(&data2);
m_data.push_back(&data3);
}程序精简后,就如上。问题是,执行完fun()后,m_data中只有一个元素(data3),怎么会这样?
调试跟踪,当m_data.push_back(&data1)执行后,m_data中的_MyFirst指针为"data1",_MyLast指针为"错误",_MyEnd指针为"错误";
当m_data.push_back(&data2)执行后,m_data中的_MyFirst指针为"data2",_MyLast指针为"错误",_MyEnd指针为"错误";
当m_data.push_back(&data3)执行后,m_data中的_MyFirst指针为"data3",_MyLast指针为"错误",_MyEnd指针为"错误"。就是说m_data的数据只出现了替换(替换了第一个),没有出现增加(push_back()无效?)。太郁闷了,希望高手指导.....................IDE环境-vc2003
编译器-mfc7.1
程序框架-对话框应用程序

解决方案 »

  1.   

    data1,data2,data3 都是自己定义的MY_DATA结构体插入就是用push_back()啊。。
      

  2.   

    呵呵,你可以push_back一个指针吗?
    你的摸班参数可是MY_DATA啊
      

  3.   

    MY_DATA的结构typedef struct
    {
    ......
    }MY_DATA;难道应该std::vector<&MY_DATA> m_data;
      

  4.   

    std::vector<MY_DATA*> m_data;
      

  5.   

    std::vector<MY_DATA*> m_data;
      

  6.   

    能通过编译?奇怪了都。error C2664: 'push_back' : cannot convert parameter 1 from 'struct MY_DATA *' to 'const struct MY_DATA &'
            Reason: cannot convert from 'struct MY_DATA *' to 'const struct MY_DATA'
      

  7.   

    你的data是怎么声明的?贴出来~~~const???