使用std :: initializer_list作为成员变量

tcb

我有一个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不正确吗?

w

复制astd::initializer_list不会复制其基础对象。它不打算用作容器。相反,您应该做的是将其存储在其他内容中,例如std::vector

class A
{
public:
    A(std::initializer_list<std::string> il) :
        m_il(il)
    {}

    std::vector<std::string> m_il;
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数组vs std :: initializer_list作为函数参数

作为std :: initializer_list对象的抽象类

使用std :: initializer_list []作为长度可变的列表的const列表

std :: initializer_list的实现

std :: initializer_list的实现

使用std :: initializer_list参数的非成员函数(/非构造函数上下文)的重载解析

使用std :: initializer_list构造函数而不会产生歧义?

C ++-std :: initializer_list与std :: span

std::initializer_list 作为重载运算符的右手参数?

std :: initializer_list作为模板类中的构造函数参数

如何使用C ++中带有不可复制成员的initializer_list创建映射?

std :: initializer_list可以专用吗?

C ++ std :: initializer_list用法

std :: initializer_list和引用类型

std :: initializer_list构造函数

在clang中返回std :: initializer_list

无法从std :: initializer_list <int>构造std :: initializer_list <int const>

在模板函数中使用initializer_list

隐式使用initializer_list

使用带有bitset的initializer_list

在initializer_list上使用数据

std :: strings的std :: initializer_list的奇怪行为

带有 std::thread 的 std::initializer_list

使用直接初始化与std :: initializer_list时的不同指令

如何使用带有std :: initializer_list的构造函数设计类?

如何使用std :: initializer_list <double>构造一个构造函数

如何在 Flutter 中使用 List 作为成员变量?

为什么Clang无法优化std :: initializer_list?

是否可以以编程方式构造std :: initializer_list?