C++ 初始化嵌套类

凯撒大帝

我目前正在努力初始化嵌套类

class COuter
{
public:
   class CInner
    {
    public:
        ///Properties
        osMutexId mutex;
        CSingle_Element single_place[5];

        /// Methods
        CInner(const bool is_master, const uint32_t data_length);
    };
///inner Instance
CInner inner_obj;
}

CSingle_Element 的构造函数定义为

CSingle_Element (const bool is_master, const uint32_t data_length)

如何初始化inner_obj?

哞鸭

在构造函数中使用初始化列表:

COuter::CInner::CInner(const bool is_master, const uint32_t data_length) 
:mutex(0), 
single_place{
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}, 
    {is_master, data_length}}
{}

http://coliru.stacked-crooked.com/a/14be9645dbf34a36

值得注意的是,您几乎从不希望数组作为成员,特别是如果数组属于您不想使用默认构造函数的类型。你可能想要一个std::vector. 即使你认为你想要一个数组成员,你通常真的应该使用std::array<5, CSingle_Element>. 这需要{}初始化列表中的额外内容,但在其他方面是纯粹的。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章