我有一个完全静态的类。类内部是一个指向可变长度整数列表的指针。类中的函数依赖于在调用之前初始化为2的列表中的第一个值。有些函数也经常被调用,所以我不想在每个函数中首先设置该值。
以下是标题的示例:
class Foo{
public:
static void f1();
private:
static int* list;
}
和.cpp文件,全局(在其他函数调用之外):
int* Foo::list = new int[10];
我需要以某种方式初始化list [0] = 2,但不允许在与列表初始化程序相同的位置。
答案 0 :(得分:1)
如果你的编译器支持C ++ 2011,那么写
int* Foo::list = new int[10] { 2 };
另一种方法是定义私有静态函数。例如
class Foo
{
// ...
private:
static int *list;
static int * init()
{
int *p = new int[10];
p[0] = 2;
return p;
}
};
int* Foo::list = Foo::init();