C ++获取具有其他参数的构造函数的初始化列表
C++ get initializer list for constructor with other parameters
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());
}
};
我做了一个class,它有一个构造函数接受多个参数,包括initializer_list。我想像
一样使用这个 class
V v(2) = {1, 2};
但我只能像
一样使用这个class
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
,您不再需要输入尺寸。
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());
}
};
我做了一个class,它有一个构造函数接受多个参数,包括initializer_list。我想像
一样使用这个 classV v(2) = {1, 2};
但我只能像
一样使用这个classV 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
,您不再需要输入尺寸。