【发布时间】:2017-07-30 22:18:47
【问题描述】:
我可以像这样在头文件中轻松声明和初始化一个常量数组成员:
class MyClass {
public:
const int arr[4] = {1, 2, 3, 4};
}
但是当数据由函数定义时,我无法在头部初始化:
#include <cmath>
#define BASE 2
class MyClass {
public:
const int arr[4];
for (i=0;i<4;i++) {
arr[i] = pow(BASE, i);
}
}
当我尝试在 .cpp 文件的类构造函数中初始化数组时,我得到了明显的 uninitialized member with 'const' typeerror,因为数组应该已经被初始化了。
如何使用预处理器宏和 cmath 函数在头文件中初始化 const int 数组?
【问题讨论】:
-
函数在哪里?
-
在这样的函数之外的类定义中不能有循环。
-
@uzumaki This is what I mean.
-
@uzumaki -- 此部分适用于 cmets,StoryTeller 发表了评论。
-
如果你对试图让你头疼的人无礼,你应该维护这样的代码。
标签: c++ arrays macros initialization preprocessor