我有以下问题。我有一类,说初始化类中的向量
class MyClass{
public:
class MyNumber;
MyClass(char const *filename);
class MyNumber{
public:
MyNumber(int n) : n(n) {}
private:
int n;
};
private:
std::vector<MyNumber> mynumbers
};
现在我想写的MyClass类,它读取文件,并根据文件的内容初始化向量通过myNumbers构造。我所做的是以下内容
MyClass::Myclass (char const * filename){
int num = 0;
std::string line;
std::getline(file, line);
std::stringstream ss(line);
ss >> num;
mynumbers(num,MyNumber(5));
}
但我得到的错误“类型”std :: vector'不提供调用运算符“。我也不能使用构造函数初始化列表(至少我认为是这样),因为它取决于我的输入文件我的向量必须有多大。 有人可以告诉我这是怎么完成的?
执行任何I/O(超出日志记录)的构造函数通常是一个坏主意。考虑将文件读数移至单独的设置功能。 – molbdnilo
我建议不要在构造函数中读取文件。改为创建一个“加载”或“初始化”方法。如果读取文件失败或需要创建对象的副本(如'std :: vector'),会发生什么情况。 –
'mynumbers.resize(num,MyNumber(5));'? – Jarod42