2012-03-19 90 views
0

我想爲我的作業定義一個Class類型的數組。 classB和classC是在另一個classA中定義的,我必須定義一個在classB類型classC內定義的數組。以下是我正在寫的代碼。定義一個類型的數組類

//main.cpp 
... 
//cop.h 
class cop 
{ 
    public: 
     .... 
     class Person 
     { 
      private: 
       static char name; 
       static char age; 
       static char gender; 
     }; 
     class Station 
     { 
      public: 
       Station(); 
       ~Station(); 
      private: 
       Person personArray[20]; 
      protected: 
       void visit(); 

     }; 

//cop.cpp 
char cop::Person::name; 
char cop::Person::age; 
char cop::Person::gender; 

cop::Station::Station(){} 
cop::Station::~Station(){} 
Person cop::Station::personArray[20]; 

我得到以下錯誤;

「人」沒有指定類型

+2

混合命名空間和類,是嗎? – karlphillip 2012-03-19 14:35:58

+0

你是否真的希望所有'Person'實例共享每個'name','age'和'gender'的單個實例? – Chad 2012-03-19 14:41:18

回答

1

首先(如我後來指出)的Person領域不應該是static。在此之後,刪除下列行:

char cop::Person::name; 
char cop::Person::age; 
char cop::Person::gender; 

Person cop::Station::personArray[20]; 

正確設計的代碼應該閱讀如下所示:

// Person.h 
    class Person 
    { 
     public: 
      char name; 
      char age; 
      char gender; 
    }; 

    // Station.h 
    class Station 
    { 
     public: 
      Station(); 
      ~Station(); 
     private: 
      Person personArray[20]; 
     protected: 
      void visit(); 

    }; 

    // Station.cpp 
    Station::Station() 
    { 
     for (int i = 0; i < 20; i++) 
     { 
      personArray[i].age = ...; 
     } 
    } 

順便說一句:聲明Person類的所有領域static一定會確保所有你陣列中的人具有相同的姓名,年齡和性別......

+0

'name','age'和'gender'行是必要的,因爲這些行被聲明爲類的靜態成員。正如我在對OP的評論中指出的那樣,這是否正確是可疑的。 – Chad 2012-03-19 14:42:51

+0

好的,據我所知,正如我所指出的,讓所有人具有相同的姓名,年齡和性別似乎沒有用處......我會相應地更改我的示例代碼。 – 2012-03-19 14:45:31