プログラムの実行時に新しいクラスオブジェクトを動的に作成するメソッドを探しています。これまでのところ、私が読んだことは、それが簡単ではなく、通常、より高度なプログラム要件のために予約されていると私に信じさせます。
私がこれまでに試したことはこれです:
// create a vector of type class
vector<class_name> vect;
// and use push_back (method 1)
vect.push_back(*new Object);
//or use for loop and [] operator (method 2)
vect[i] = *new Object;
これらはどちらもコンパイラからエラーをスローしませんが、私はifstreamを使用してファイルからデータを読み取り、オブジェクトを動的に作成しています...ファイルの読み取りは奇妙なデータを取り込み、メモリアドレスを読み取ることがあります。上記のコードスニペットの使用/誤用が原因です。
ファイル読み取りコードは次のとおりです。
// in main
ifstream fileIn
fileIn.open( fileName.c_str() );
// passes to a separate function along w/ vector
loadObjects (fileIn, vect);
void loadObjects (ifstream& is, vector<class_name>& Object) {
int data1, data2, data3;
int count = 0;
string line;
if( is.good() ){
for (int i = 0; i < 4; i++) {
is >> data1 >> data2 >> data3;
if (data1 == 0) {
vect.push_back(*new Object(data2, data3) )
}
}
}
}