我有一个A
类,它接受initializer_list
并将其存储为成员变量。
class A
{
public:
A(std::initializer_list<std::string> il) :
m_il(il)
{}
std::initializer_list<std::string> m_il;
};
另一个类B
将A
作为成员变量,默认使用initializer_list
class B
{
public:
B()
{
std::cout << *m_a.m_il.begin() << std::endl;
}
A m_a { "hello", "bye" };
};
现在,当我在main中运行此代码时,它什么都不打印。
int main()
{
B b;
}
为什么上面的代码不能打印hello
?我对std::initializer_list
的使用是否不正确?
答案 0 :(得分:8)
复制std::initializer_list
不会复制其基础对象。它并不意味着用作容器。您应该做的是将其存储在其他内容中,例如std::vector
:
class A
{
public:
A(std::initializer_list<std::string> il) :
m_il(il)
{}
std::vector<std::string> m_il;
};