gpt4 book ai didi

c++ - 如何在类的构造函数中定义成员 vector 的大小?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:26 25 4
gpt4 key购买 nike

我想先创建一个没有大小的 vector (vector<int> times),然后我想在类的构造函数中定义它的大小(times(size))。

我可以使用初始化列表来完成,如下所示

class A (int size): times(size) {};

但我的问题是,为什么我不能像下面的代码那样在类的构造函数中执行此操作?

我的意思是为什么下面的代码是错误的?

class A
{
public:
A(int size);
private:
std::vector<int> line;
};

A::A(int size)
{
line(size);// here I got the error
}

line(size)犯错误

最佳答案

可以使用成员函数 std::vector::resize 为此

A::A(int size)
{
line.resize(size);
}

成员(member)line在到达构造函数的主体之前将被默认构造(即 std::vector<int> line{} )。因此写line(size);没有意义,因此编译器错误。

使用 member initializer lists 会好得多, 这将有助于从传递的大小构造 vector 并用 0 初始化的,在到达构造函数主体之前。

A(int size) : line(size) {}

它使用以下 std::vector 的构造函数

explicit vector( size_type count );   // (since C++11)(until C++14)
explicit vector( size_type count, const Allocator& alloc = Allocator() ); // (since C++14)

关于c++ - 如何在类的构造函数中定义成员 vector 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57001006/

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