2012-03-19 11 views
0

私は宿題のために、クラス型の配列を定義しようとしています。 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]; 

エラーが発生しました。 Personのフィールドはstaticをすべきではない(私は後で指摘だとして)

「人」タイプ

+2

名前空間とクラスを混在させていますか? – karlphillip

+0

あなたはすべての 'Person'インスタンスが' name'、 'age'と' gender'の単一のインスタンスを共有することを_really_しますか? – Chad

答えて

1

まず第一に名前を付けていません。その後、次の行を削除します。ところで

// 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 = ...; 
     } 
    } 

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

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

が正しくあなたのコードは次のように読むべき設計さ Personクラスのすべてのフィールドを宣言する staticは間違いなく確認しますすべてのことあなたの配列の人は、同じ名前、年齢、性別を持っています...

+0

'name'、' age'、 'gender'の各行はクラスの' static'メンバとして宣言されているので必要です。それが正しいかどうかは、私がOPへのコメントで指摘したように、疑わしいものです。 – Chad

+0

私が指摘したように、すべての人に同じ名前、年齢、性別を持たせることは有用ではないように思われます...私はそれに応じてサンプルコードを変更します。 –

関連する問題