C++ 初始化嵌套 class
C++ initialise nested class
我目前正在努力初始化嵌套 class
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>
。这需要在初始化列表中添加一个额外的 {}
,但在其他方面是纯赢的。
我目前正在努力初始化嵌套 class
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>
。这需要在初始化列表中添加一个额外的 {}
,但在其他方面是纯赢的。