C ++ alloc对象数组

时间:2011-04-12 20:00:31

标签: c++ memory-management

我遇到了这个问题,我需要用一些构造函数初始化一些对象的数组。让我说明我的意思:

ofstream* out = new ofstream[10];

for(int i = 0; i < 10; i++){
    stringstream ss;
    ss << "file" << i << ".txt";
    string str(ss.str());
    char *fileName = (char*)str.c_str();
    out[i] = ofstream(fileName); //Now, this is wrong
}

我需要wrong标记行的帮助。如何分配该数组的每个成员?

谢谢你没有把我指向其他帖子(我在帖子之前看了很多)

4 个答案:

答案 0 :(得分:5)

摆脱fileName变量并使用out[i].open(str.c_str()); - 并记住delete[] out;

答案 1 :(得分:5)

这是解决问题的最简单方法。

out[i].open(fileName); 

答案 2 :(得分:2)

您可以通过删除strfileName来优化这一点:
out[ i ].open( ss.str().c_str() );

另外,我建议您使用std::vector不要进行内存分配和释放。
std::vector< std::ofstream >

答案 3 :(得分:2)

如果您确实需要在插入元素时调用构造函数(可能是因为您的类没有默认构造函数),请尝试按照此处所述放置new http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5