向量中的结构中的C ++结构

时间:2013-11-19 18:16:10

标签: c++ vector struct

我的结构和矢量:

struct course
{
    string nameOfCourse;
    string prepodName;
    group *mGroup;
    vector<lect> *para;
};

struct lect
{
    string date;
    int numberOfPresentStudents;
};

struct group
{
    string name;
    int numberOfStudents;
};

vector<course> courseList;

如何在以下位置输入数据:

courseList[i].mGroup[i].name

如果我写

cin >> courseList[i].mGroup[i].name;

string tmp;
cin >> tmp;
courseList[i].mGroup[i].name =  tmp;

我收到错误:

  

地址0x的未处理异常........在.... exe:0xC0000005:   访问冲突读取位于0xCCCCCCE0

void inputS()
{       
    int size = courseList.size();
    courseList.push_back(course());             
    cout << "\nCourse name : ";     
    cin >> courseList[size].nameOfCourse; //work
    cout << "\nGroup name : ";      
    cin >> courseList[size].mGroup[size].name; //doesn't work
};

2 个答案:

答案 0 :(得分:0)

实际上只有两种方式

cin >> courseList[i].mGroup[i].name;

可能出错,向量courseList对于[i]来说不够大,或者指针mGroup没有指向[i]的足够内存。

要解决这些问题,您必须确保courseList足够大(如果您愿意,可以使用push_back),或者您必须确保mGroup指向足够的内存(可能使用new)。

真的没什么可说的,如果你发布更多代码并描述你想要实现的目标,你将得到更详细的帮助。

答案 1 :(得分:0)

试试这个:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

struct group
{
    string name;
    int numberOfStudents;
    group(string na)
    {
        name = na;
    }
};

struct lect
{
    string date;
    int numberOfPresentStudents;
};

struct course
{
    string nameOfCourse;
    string prepodName;
    group *mGroup;
    vector<lect> *para;
    course(group* g)
    {
        mGroup = g;
    }
};

int main()
{
    vector<course> courseList;
    string tempname;
    cin >> tempname;
    group newG(tempname);
    course C(&newG);
    courseList.push_back(C);
}

完美的编译。这是link

相关问题