我写了一个程序,出了错.因为程序比较大,我拿不上来,就写了一个一样的,错误也一样,可以通过编译,运行出错,逐步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,你就可以看到那里出错啦,但我解决不了,大家帮手,谢谢.
#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,你就可以看到那里出错啦,但我解决不了,大家帮手,谢谢.
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;
}
{
*ppVI=&m_vi;
}
int main()
{
CAA aa;
vector<int>* pVI=NULL;
aa.GetVI(&pVI);//相应的。。
....
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的问题