我想在MFC中使用vector,结果总是出现这样的问题,programDlg.obj : error LNK2005: "class std::vector<int,class std::allocator<int> > aaa" (?aaa@@3V?$vector@HV?$allocator@H@std@@@std@@A) already defined in program.obj
Debug/program.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
这论坛竟然连张图片都上传不了,哎

解决方案 »

  1.   

    不要在头文件中定义变量把它放到cpp中定义, 然后在头文件中声明, 即加上extern关键字.
      

  2.   

    我在dlg.h文件中这样写:extern vector<int> aaa;也不对
      

  3.   

    头文件里面写 extern vector<int> aaa;
    cpp中再写个 vector<int> aaa;一般不要这么直接在头文件中定义全局变量mfc中不是有 CXXApp 吗,你可以把任何地方都用到的变量定义到  CXXApp 类内
    用的时候  强转为 CXXApp* pApp = (CXXApp*)afxgetApp();
    然后 pApp-> 你定义全局都要用的变量
      

  4.   

    我在dlg.h文件中这样写:extern vector<int> aaa;也不对
    报什么错?变量的定义一般放到cpp文件中,h中申明即可。
      

  5.   

    我在dlg.h文件中这样写:extern vector<int> aaa;也不对
    报什么错?变量的定义一般放到cpp文件中,h中申明即可。
    版主,我想问一下MFC中怎么使用vector?
    我在Dlg.h文件中加入
    #include<vector>
    using namespace std;
    然后在BOOL CProgramDlg::OnInitDialog()
    定义为 vector<int> aaa;?
    那怎么声明呢?
      

  6.   

    我在dlg.h文件中这样写:extern vector<int> aaa;也不对
    报什么错?变量的定义一般放到cpp文件中,h中申明即可。
      

  7.   

    在Dlg.h文件中加入
     #include<vector>
     using namespace std;
    extern vector<int> aaa; 再在Dlg.cpp文件中加入
    vector<int> aaa; 
     
      

  8.   

    这种做法会出现error C2086: 'aaa' : redefinition
      

  9.   

    在.h文件里面进行定义就行了,要放在class里面去,比如public下面或者private下面都可以你出现redefinition是说重复定义。
      

  10.   


    #include <vector>
    class CProgramDlg : CDialog
    {
    public://公共变量
    private://私有变量
       std::vector<int> aaa;
    };
      

  11.   

    果然好使了,谢谢!我原来一直以为得在dlg.h文件中声明变量,然后在BOOL CProgramDlg::OnInitDialog()初始化,一直不知道该怎么在Dlg.h中声明vector。