2015-06-08 168 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();