STL的程序出错了,我解决不了,大家帮忙,解决就结贴

赖勇浩 2005-03-19 11:25:14
我写了一个程序,出了错.因为程序比较大,我拿不上来,就写了一个一样的,错误也一样,可以通过编译,运行出错,逐步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,你就可以看到那里出错啦,但我解决不了,大家帮手,谢谢.
...全文
128 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawndu 2005-03-20
  • 打赏
  • 举报
回复
一般c的书上都有讲,这个在pascal中倒分的很清楚
dawndu 2005-03-20
  • 打赏
  • 举报
回复
改一下传的方式就可以了
赖勇浩 2005-03-19
  • 打赏
  • 举报
回复
解决问题,谢谢了.可是这是为什么呢?你可不可以写一篇这样的文章放在你的blog上?相信还会有初学者遇到这样的问题的,希望你能给我们一个详尽的解释,谢谢了.

结贴了,非常感谢.
dawndu 2005-03-19
  • 打赏
  • 举报
回复
#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的问题
halfdream 2005-03-19
  • 打赏
  • 举报
回复

int main()
{
CAA aa;
vector<int>* pVI=NULL;
aa.GetVI(&pVI);//相应的。。
....
halfdream 2005-03-19
  • 打赏
  • 举报
回复
改法一:

void CAA::GetVI(vector<int>** ppVI)
{
*ppVI=&m_vi;
}
赖勇浩 2005-03-19
  • 打赏
  • 举报
回复
我使用的是VC6,没有看到有警告,那我应该怎么解决?我必须得使用这个vector指针啊,帮忙啦..我第一次用STL,以前都是用MFC,一直在编写模块,一直都通过编译,所以没有想到后来集成时会这样...重来的话很花时间的....
halfdream 2005-03-19
  • 打赏
  • 举报
回复
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;
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧