我写了一个程序,出了错.因为程序比较大,我拿不上来,就写了一个一样的,错误也一样,可以通过编译,运行出错,逐步debug也没有解决,大家帮帮忙,谢谢了.//aa.h
#include <vector>
using namespace std;class CAA
{
public:
CAA();
private:
vector<int> m_vi;//即使这个数据成员为public也一样
public:
void GetVI(vector<int>* pVI);
};
//aa.cpp
#include "aa.h"
#include <iostream>
CAA::CAA()
{
m_vi.push_back(11);
m_vi.push_back(12);
m_vi.push_back(13);
m_vi.push_back(14);
m_vi.push_back(15);
}
void CAA::GetVI(vector<int>* pVI)
{
pVI=&m_vi;
}
int main()
{
CAA aa;
vector<int>* pVI=NULL;
aa.GetVI(pVI);
vector<int>::iterator it;
for(it=pVI->begin();it != pVI->end();it++)//这里出错啦.....
{
cout<<(*it)<<endl;
}
system("PAUSE");
return 0;
}请大家编译运行调试,可以通过编译的,然后按F5进入debug,你就可以看到那里出错啦,但我解决不了,大家帮手,谢谢.

解决方案 »

  1.   

    Warning W8057 a.cpp 29: Parameter 'pVI' is never used in function CAA::GetVI(vec
    tor<int,allocator<int> > *)
    Warning W8004 a.cpp 28: 'pVI' is assigned a value that is never used in function
     CAA::GetVI(vector<int,allocator<int> > *)其实这个编译警告已经告诉你下面这儿有问题了。
    void CAA::GetVI(vector<int>* pVI)
    {
    pVI=&m_vi;
    }
      

  2.   

    我使用的是VC6,没有看到有警告,那我应该怎么解决?我必须得使用这个vector指针啊,帮忙啦..我第一次用STL,以前都是用MFC,一直在编写模块,一直都通过编译,所以没有想到后来集成时会这样...重来的话很花时间的....
      

  3.   

    改法一:void CAA::GetVI(vector<int>** ppVI)
    {
    *ppVI=&m_vi;
    }
      

  4.   


    int main()
    {
    CAA aa;
    vector<int>* pVI=NULL;
    aa.GetVI(&pVI);//相应的。。
    ....
      

  5.   

    #include <vector>
    using namespace std;class CAA
    {
    public:
    CAA();
    private:
    vector<int> m_vi;//即使这个数据成员为public也一样
    public:
    void GetVI(vector<int>* & pVI);
    };// testatoi.cpp : Defines the entry point for the console application.
    ////aa.h
    //aa.cpp
    #include "aa.h"
    #include <iostream>
    CAA::CAA()
    {
    m_vi.push_back(11);
    m_vi.push_back(12);
    m_vi.push_back(13);
    m_vi.push_back(14);
    m_vi.push_back(15);
    }
    void CAA::GetVI(vector<int> * & pVI)//你忘了c是传值的,不是传址的,你那样传不会改变pVI的
    {
    pVI=&m_vi;
    }
    int main()
    {
    CAA aa;
    vector<int>* pVI=NULL;
    aa.GetVI(pVI);
    vector<int>::iterator it;
    for(it=pVI->begin();it != pVI->end();it++)
    {
    cout<<(*it)<<endl;
    }
    system("PAUSE");
    return 0;
    }这不是STL的问题
      

  6.   

    解决问题,谢谢了.可是这是为什么呢?你可不可以写一篇这样的文章放在你的blog上?相信还会有初学者遇到这样的问题的,希望你能给我们一个详尽的解释,谢谢了.结贴了,非常感谢.
      

  7.   

    一般c的书上都有讲,这个在pascal中倒分的很清楚