我遇到了这个问题,我需要用一些构造函数初始化一些对象的数组。让我说明我的意思:
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
标记行的帮助。如何分配该数组的每个成员?
谢谢你没有把我指向其他帖子(我在帖子之前看了很多)
答案 0 :(得分:5)
摆脱fileName
变量并使用out[i].open(str.c_str());
- 并记住delete[] out;
答案 1 :(得分:5)
这是解决问题的最简单方法。
out[i].open(fileName);
答案 2 :(得分:2)
您可以通过删除str
和fileName
来优化这一点:
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