我正在寻找一种在程序运行时动态创建新类对象的方法。到目前为止,我所阅读的内容让我相信这并不容易,并且通常保留用于更高级的程序要求。
到目前为止,我尝试过的是:
// 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) )
}
}
}
}