gpt4 book ai didi

c++ - 在类中初始化 vector

转载 作者:行者123 更新时间:2023-11-30 03:35:44 25 4
gpt4 key购买 nike

我有以下问题。我有一个类,说

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 编写一个构造函数,它读取一个文件并根据文件的内容初始化 vector 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’不提供调用操作符”。我也不能使用构造函数初始化列表(至少我是这么认为的),因为它取决于我的输入文件,我的 vector 必须有多大。有人能告诉我这是怎么做到的吗?

最佳答案

只需使用方法assign

mynumbers.assign(num,MyNumber(5));

至于这个说法

mynumbers(num,MyNumber(5));

那么它对应于一个函数操作符的调用。然而,标准类 std::vector 没有这样的运算符。构造函数中的对象 mynumbers 已经创建/因此您只能为其分配新值。你不能第二次调用它的构造函数。另一方面,assign 方法被重载,以至于它对应于该类的大多数构造函数。

关于c++ - 在类中初始化 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com