2012-11-24 25 views
1

如何在頭文件中創建靜態數組?我看了一些關於stackoverflow的例子,但無法讓他們工作。頭文件中的靜態數組 - C++

謝謝!

#ifndef DRUMKITLIBRARY_H_ 
#define DRUMKITLIBRARY_H_ 


class DrumKitLibrary 
{ 
public: 
    static const char* const list[] = {"zip", "zam", "bam"}; 
}; 

#endif /* DRUMKITLIBRARY_H_ */ 
+0

您看過哪些示例,哪些不起作用? –

回答

3

你的編譯器錯誤發生了,因爲這不是你如何初始化靜態數據(好吧,靜態const整型可以這樣初始化,但就是這樣)。你只需要在類定義中聲明你的靜態數據,你可以在類之外定義它。但是,您仍然有可能出現問題。

在頭文件中定義靜態數據的問題是每個包含該頭文件的文件都會獲得自己的數組副本。你最好通過來聲明它在頭部和定義爲它在一個實現文件中。

// A.h 
class A { 
public: 
    static const char *f[]; 
}; 

// A.cpp 
#include "A.h" 

const char *A::f[] = { "one", "two" }; 
+0

C++ 11怎麼樣? –

+0

@LuchianGrigore:說實話,我遠離C++ 11的權威,而我忘記了'constexpr'。我在這裏和那裏都花點時間,但是我在日常工作中使用嵌入式軟件,而且我們還沒有使用C++ 11編譯器(美國食品和藥物管理局的指導方針使得開關編譯器比人們所希望的更麻煩,而且我們一個小團隊)。無論如何,謝謝你提到它。 –

+0

哦,男孩,我聽到你! –

0

你不知道。

你在頭文件中聲明它並在源代碼中定義它。