2012-07-08 93 views
1

我正在開發一個C++項目。在使用Java之後,我正在自學C++。代碼:C++數組編譯時間錯誤

#include <iostream> 
#include <string> 

using namespace std; 
class dayType 
{ 
private: 
    string day; 
    string week[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; 


public: 
    dayType() 
    { 
     day = "Monday"; 
     dayID = 0; 
    } 
}; 

有更多的公共功能,但我把這些留在外面,因爲他們在這裏不重要。數組上有編譯時錯誤。它表示它「無法解析標識符:星期」,「意外標記:{」和「意外標記:}」。有人可以解釋爲什麼會這樣嗎?如果我將其聲明爲「字符串周[7]」;然後在函數中定義實際值,它工作正常,但這是一個痛苦。

+2

重複的問題:http://stackoverflow.com/questions/284833/how-do-you-declare-arrays-in-ac-header – birryree 2012-07-08 05:00:03

+0

您使用的是Java語法初始化字符串數組'week []'。 – Lion 2012-07-08 05:03:45

+0

「定義函數中的實際值...一種痛苦」 - 爲什麼?將成員變量初始化移除是沒有意義的,這樣你就必須同時查閱聲明和構造函數才能找到非默認值...... – 2012-07-08 05:05:42

回答

1

您正在尋找的C++功能是「靜態類成員」。下面是語法:

#include <iostream> 
#include <string> 

using namespace std; 
class dayType 
{ 
private: 
    string day; 
    static string week[]; 

public: 
    void Project113() 
    { 
     day = "Monday"; 
     dayID = 0; 
    } 
}; 


// Note that if the class definition is in a .H file, the following line should 
// appear in exactly one .CPP file. 
string dayType::week[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; 
+0

我不太確定。我認爲在這種情況下,他對如何在C++中使用OOP感到困惑。這看起來不是很好的設計。 – ApplePie 2012-07-08 05:37:39

3

對我而言,這在C++中是不可能的。你究竟想要做什麼?在C++中,OOP並不像在Java或C#中那樣強加於你。

另請注意,您的函數名稱與您的類名稱不同。這意味着省略返回類型將導致編譯器錯誤[感謝Aditya Kumar指出它不會導致void返回類型]

+2

如果函數不是構造函數,則省略返回類型是C++中的錯誤。 – 2012-07-08 05:05:30