C++获取具有其他参数的构造函数的初始值设定项列表

C++ get initializer list for constructor with other parameters

本文关键字:列表 构造函数 获取 其他 参数 C++      更新时间:2023-10-16
class V
{
private:
    int m_size;
    std::vector<int> m_list;
public:
    V(int size, std::initializer_list<int> init_list) : m_size(size)
    {
        m_list = std::vector<int>(init_list.begin(), init_list.end());
    }
};

我创建了一个类,该类的构造函数接受多个参数,包括initializer_list。我想像这样使用这个类

V v(2) = {1, 2};

但我只能像这样使用这个类

V v(2, {1, 2});

不能像我写的第一段代码一样,按非initializer_list部分和initializer_list部分来区分参数吗?

您可以更改构造函数以仅获取initializer_list

class V
{
private:
    std::vector<int> m_list;
    int m_size;
public:
    V(std::initializer_list<int> init_list):
        m_list(init_list.begin(), init_list.end()),
        m_size(m_list.size()) { }
};

并用以下命令构造 V 对象:

V v1 = {1,2};
V v2({1, 2});

由于std::vector,您不再需要输入大小。