2013-03-19 87 views
0

我有一個數組,我希望它是一個私有成員變量。我的程序在實現選擇排序時的工作方式是,主要方法以數組大小進給,並且構造函數傳入並創建具有給定大小的新數組。C++成員專用數組變量 - 在編譯時未定義

我已經在Java中完成了,但在C++中找不到。 (在看了這個網頁上的其他人的帖子後,我想通了,我必須讓我的變量靜態)

謝謝。

[ArrayS.h]

public: 
    ArrayS(void); 
    ArrayS(int max); 
    ~ArrayS(void); 

private: 
     static long a [0]; 

[ArrayS.cpp]

ArrayS::ArrayS(void) 
{ 

} 

ArrayS::ArrayS(int max) 
{ 
    long ArrayS::a [max];     
    nElems = 0; 
} 

謝謝。

+0

如果數組大小可以變化,請不要使用'long a [0];'。 '0'不是正確的大小。使用'std :: vector a;' – 2013-03-19 21:52:46

+0

要創建一個具有運行時定義大小的數組,請使用'std :: vector'或類似的。 'static'將會讓你無處可尋。 – chris 2013-03-19 21:52:55

+0

這不太可能需要'靜態'數據成員。 – juanchopanza 2013-03-19 21:53:24

回答

1

上面的代碼有兩個問題。第一個是,在C++中,不能有大小爲0的數組的第二個是一類的靜態成員,則需要在恰好一個翻譯單元提供的定義:

struct test { 
    static long a[10]; 
}; 
// in a single .cpp 
long test::a[10] = {}; 

其他,如果您需要僅在運行時已知的大小的數組,則不能使用原始數組。您可以使用動態分配的內存(通過new[]),但最好使用std::vector<long>。此外,還不清楚你是否真的需要該成員爲static。在這方面,static關鍵字意味着類成員(即,由程序中的所有代碼共享,而不是每個實例的數據)

+0

我將使用std :: vector。謝謝 – SndLt 2013-03-19 21:54:55

0

需要再次定義變量,在類的外部。每當你有一個靜態成員。 儘管g ++編譯的數組的大小爲零的C++代碼,請重新考慮這是您真正想要的。