2015-06-08 123 views
1

我有一个完全静态的类。类内部是一个指向可变长度整数列表的指针。类中的函数依赖于列表中的第一个值在被调用之前被初始化为2。一些函数也被称为非常频繁的,所以我不想在每个函数中首先设置这个值。使用值初始化静态数组

这里是报头的一个示例:

class Foo{ 
public: 
    static void f1(); 
private: 
    static int* list; 
} 

和cpp文件,在全球范围(外的其他函数调用):

int* Foo::list = new int[10]; 

我需要初始化列表[0] = 2不知何故,但这是不允许在我有列表初始值设定项相同的位置。

+0

_“我有一个完全静态的类。”_为什么? –

+0

_“我需要以某种方式初始化list [0] = 2,但不允许在与列表初始化程序相同的位置。”_所以? –

+0

@LightnessRacesinOrbit - 可能是一个有很多常量的基类。例如形状颜色。 –

回答

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();