我的结构和矢量:
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
};
答案 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。