int と文字列で構成されたクラスがありますが、そのクラス内にベクトルもあります。ファイルからレコードを読み取ってから、各行を解析した後、情報をクラスのベクトルに入れる必要があります。ID や名前などの基本的なパッケージ情報を取得し、そのパッケージで提供されるサービスを追加する必要があるため、1 つのパッケージから 10 個のレコードを取得できますが、それらはサービスの種類が異なります。今のところ、各パッケージにデータを入れて各要素からデータにアクセスしようとしていますが、クラス内のベクトルからデータを取得しようとすると、コンパイルされたファイルがクラッシュします。1233 と foo も表示されますが、テストは表示されません。それはなぜですか?
int main()
{
vector<package> packs;
package pack;
pack.ID = 1233;
pack.name = "foo";
packs.push_back(pack);
pack.putData("test",12);
cout << packs[0].name << endl;
cout << packs[0].ID << endl;
cout << packs[0].bservice[0].serviceID << endl; //[b]Crashes in this line[/b]
return 0;
}
定義されたクラスは次のとおりです。
class package
{
public:
class aservice
{
public:
int serviceID;
string othername;
};
int ID;
string name;
vector<aservice> bservice;
void putData(string name1, int serviceID1)
{
aservice obj;
obj.serviceID = serviceID1;
obj.othername = name1;
bservice.push_back(obj);
}
};