【发布时间】:2015-07-13 01:35:10
【问题描述】:
我需要声明一个结构的类成员数组,理想情况下在声明时初始化如下:
class Foo
{
typedef struct _TMember
{
uint16 m_key;
uint16 m_val;
}
TMember;
TMember m_member_tab[] =
{
{ 10, 2400},
{ 20, 2500},
{ 30, 2600},
{ 40, 2700},
{ 50, 2650},
};
// etc...
};
这可以在传统的 C++(C++11 之前)类头中完成吗?
编辑:如果没有,什么是好的选择?最好将数组作为类成员,否则可以在通用头文件中定义。
【问题讨论】:
-
您必须牢记naming rules 和单一定义规则,否则它的工作原理如图所示。
-
在 C++ 标头中使用这些声明时出现此错误:错误:在 '{' 标记之前不允许使用大括号括起来的初始化程序
-
只有 C++11 以后才允许这样做。
-
你可以在标题中写
static const TMember m_member_tab[5];,在一个.cpp文件中,有表格 -
也就是说我们需要先知道元素的数量?可以用
sizeof( m_member_tab ) / sizeof( TMember )之类的东西来完成吗(鉴于数组有很多项目)?
标签: c++