c++基础-【初学者跪地求助】一个关于类中vector类型调用的问题。

问题描述

【初学者跪地求助】一个关于类中vector类型调用的问题。

一个项目管理的程序,现在在写输出项目中任务列表的功能。
getTaskList()函数中似乎总是无法调用project类中的 任务列表vector
程序运行就会崩溃
C++初学者求帮助啊!

数据已经由initData()函数初始化
有两个包含任务列表的容器
还有一个包含项目列表的容器

#include
#include
#include
using namespace std;

class Time
{
public:
Time()
{
hour = 0;
minute = 0;
sec = 0;
}
void set_time(int h,int m,int s);
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::set_time(int h,int m,int s)
{
hour=h;
minute=m;
sec=s;
}
void Time::show_time()
{
cout << hour << ":" << minute << ":" << sec << endl;
}

class task{
protected:
string id,releaserId;
Time releaseTime;
int type;
bool state;
string title;

    Time finishTime;
public:
    task(string i,string r,Time re,int t,bool s,string ti,string f,Time fi);
    void showTaskInfo();
    string finisherId;

};

task::task(string i,string r,Time re,int t,bool s,string ti,string f,Time fi){
id=i;
releaserId=r;
releaseTime=re;
type=t;
state=s;
title=ti;
finisherId=f;
finishTime=fi;
}

void task::showTaskInfo(){
cout<<"ID:"<<id<<endl;
cout<<"发布者ID:"<<releaserId<<endl;
cout<<"创建时间:";
releaseTime.show_time();
cout<<"任务类型:";
if(type==0){
cout<<"普通任务"<<endl;
}
else if(type==1){
cout<<"私密任务"<<endl;
}
else if(type==2){
cout<<"指派任务"<<endl;
}
cout<<"任务状态:";
if(state==0){
cout<<"已发布"<<endl;
}
else{
cout<<"已完成"<<endl;
}
cout<<"题目:"<<title<<endl;
if(state==1){
cout<<"完成者ID:"<<finisherId<<endl;
cout<<"完成时间:";finishTime.show_time();
}
}

class proj{
protected:
string id,releaserId;
Time releaseTime;
vector vecTaskList;
string title;
public:
proj(string,string,Time,vector,string);
void getTaskList();
};

proj::proj(string i,string r,Time t,vector v,string ti){
id=i;
releaserId=r;
releaseTime=t;
vecTaskList=v;
title=ti;
}

void proj::getTaskList(){
/* for(int i=0;i<vecTaskList.size();i++){

vecTaskList[i].showTaskInfo();
} */
cout<<vecTaskList[0].finisherId;
cout<<"00000";
}

vector vecProj1;
vector vecProj2;
vector vecProj;

void initData(){
Time time1,time2,time3,time4,time5,time6;
time1.set_time(8,36,53);
time2.set_time(9,32,40);
time3.set_time(12,38,56);
time4.set_time(11,12,23);
time5.set_time(12,06,10);
time6.set_time(00,00,00);
task task1("001","Eacials",time1,0,0,"A","NULL",time6);
task task2("002","Eacials",time1,1,1,"B","Anne",time3);
task task3("003","Eacials",time1,2,0,"C","NULL",time6);
task task4("004","hs",time2,0,1,"D","Ben",time4);
task task5("005","hs",time2,1,0,"E","NULL",time6);
task task6("006","hs",time2,2,1,"F","Justin",time5);
proj proj1("001","Eacials",time1,vecProj1,"IMP");
proj proj2("002","hs",time2,vecProj2,"NEC");

vecProj1.push_back(task1);
vecProj1.push_back(task2);
vecProj1.push_back(task3);
vecProj2.push_back(task4);
vecProj2.push_back(task5);
vecProj2.push_back(task6);
vecProj.push_back(proj1);
vecProj.push_back(proj2);
proj1.getTaskList();

}

main(){
initData();

vecProj[0].getTaskList();

system("pause");
return 0;

}

解决方案

虽然我不知道你的程序运行后报什么错误!但是从你的main函数来看,你的vecProj[0]在哪里定义了?你initData()初始化了数据,但是这个函数里定义了task,定义了vecProj1,vecProj2,但这些变量的作用范围都只是在initData,而不是整个工程!所以你应该定义在initData()之前,作为全局变量,然后再initData()里进行初始化,最后再输出向量vecProj中的值!

时间: 2024-10-01 16:56:55

c++基础-【初学者跪地求助】一个关于类中vector类型调用的问题。的相关文章

求助一个vb.net中webbrowser的问题

问题描述 求助一个vb.net中webbrowser的问题 我用vb.net中的webbrowser提取超链接,代码如下: Timer1.Enabled = False Dim web As WebBrowser = WebBrowser1 For Each i As HtmlElement In web.Document.GetElementsByTagName("a") url = url + i.InnerText + i.GetAttribute("href"

restlet-在基于spring的REST服务 中如何让每一个资源类中的 每个资源方法都有一个URL呢?

问题描述 在基于spring的REST服务 中如何让每一个资源类中的 每个资源方法都有一个URL呢? 如 在这一篇 博文中 http://my.oschina.net/jiyayun/blog/146446 每一个资源类中都只有一个 方法可用.如果我在一个资源类中有多个 资源方法应该怎么弄呢?求大神帮忙,谢谢了. 解决方案 因为每个类对应一个url如果是每个方法,那么就冲突了.你可以用代码生成器产生代理类,每个类对应一个原始类的方法来解决这个问题.

visual studio 2010-VS2010 MFC一个自定义类如何调用一个对话框类中的成员变量

问题描述 VS2010 MFC一个自定义类如何调用一个对话框类中的成员变量 我从一个对话框定义了几个CString类型的edit控件,我现在写一个类想调用该对话框中的创建的edit控件变量.怎么办啊 解决方案 字符串: getdlgitem(id)->getwindowtext() 数字 getdlgitemid(id) 解决方案二: 把那个对话框的CString变量变成public的,然后就可以直接用了,当然你需要先知道你那个对话框的指针. 解决方案三: 黑马程序员---定义一个包含私有成员变

如何结束surfaceview跳转到另一个activity类中

问题描述 如何结束surfaceview跳转到另一个activity类中 我做的一个游戏,用的surfaceview画图,现在我想在游戏结束的时候结束surfaceview的画图然后跳转到另一个activity类里重新开始游戏 解决方案 surfaceview所在的activity相互访问可以通过内部类,也可以把当前activity,但最好定义一个内部类,便于维护和理解这是和surfaceview交互的. activity定义内部类class CallBack(){ public void se

hibernate HQL new xxx() 查询 join连接多个表,并把连接后的表保存到一个新类中

hibernate HQL  new xxx() 查询 join连接多个表,并把连接后的表保存到一个新类中 另外  保存一些字段可以这样 select new com.zrj.entity.BankSelect(bankNum,bankName)from BankInfo as bank where 1=1

java-怎么获取一个JAVA类中各个方法的代码块

问题描述 怎么获取一个JAVA类中各个方法的代码块 特殊需求:获取一个JAVA类中各个方法的代码块来查找方法中是否包含某个关键字,现在通过发射只能拿到方法的属性和注释,有没有API或者其他方法,求告知,3Q 没金币了..对不起大家 PS:获取本地源代码的,不是运行时的class 解决方案 myeclipse中调试调用带有静态代码块的类时出现java.lang.NoClassDefFoundError的处理方法在DWR中实现直接获取一个JAVA类的返回值的两种方法java代码获取当前类类名.方法名

[WinForm]在一个界面把值用一个数组保存然后存到一个实体类中.

问题描述 界面有多个TxtBox值... 解决方案 解决方案二:怎么实现?高手来挖解决方案三:this.m_texts=newstring[textBoxes.Length];for(inti=0;i<textBoxes.Length;i++){m_texts[i]=textBoxes[i].Text;} 解决方案四:List<string>list=newList<string>();foreach(Controlcinthis.Controls){if(c.GetType

【求助】派生类中的函数访问基类同名数据成员的问题

问题描述 /*2008年5月20日14:28:54派生类中的函数访问基类同名数据成员的问题*/usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespace继承_同名覆盖问题{classProgram{classA{publicinta=10;}classB:A{newpublicinta=2;//B类的a"覆盖"了基类的apublicvoidf(){Console.WriteLine(a);//请问如何在本

Directx11教程(9) 增加一个TimerClass类

     在上篇教程代码的基础上,我们增加一个TimerClass类,这个类的功能很简单,就是可以计算相邻2帧的时间差.利用这个时间差值,可以实现平滑的动画,使得动画不会因为不同机器fps不同,从而动画效果变快或者变慢.     我们主要是利用QueryPerformanceCounter函数来查询定时器的计数值.     如果硬件里有定时器,它会启动这个定时器,之后会不断获取定时器的值,这样的定时器精度,就跟硬件时钟的晶振一样精确的. TimerClass.h代码如下: #pragma onc