C/C++構造体初期化


単純な構造体データの場合:
struct A
{
	int a;
	int b;
};
A temp[4] = { 0 };

これで直接初期化すればいいです.しかし、構造体にクラスが1つ含まれている場合、このように初期化すると深刻な問題が発生し、2回目の使用で初期化に成功せず、プログラムがクラッシュすることになります.次のようになります.
struct A
{
	int a;
	int b;
	string c;
};
A temp[4] = { 0 }; //error

次のようになります.
struct A
{
	int a;
	int b;
	string c;
};

/*
*temp:     
*len:       
*/
int InitAStruct(A *temp,int len) 
{
	for (int i = 0;i < len;i++) {
		temp->a = 0;
		temp->b = 0;
		temp->c = "";
		++temp;
	}

	return 0;
}

//A temp[4] = { 0 }; //error
A temp[4];
InitAStruct(temp,4);//right

クラス(string)の存在が含まれているため、通常の方法で初期化することはできません