2012-03-19 2 views
0

숙제를 위해 클래스 형식의 배열을 정의하려고합니다. classB와 classC는 다른 classA 안에 정의되어 있고, 이 classB 유형의 classC 안에 정의 된 Array를 정의해야합니다. 아래 코드는 제가 작성한 코드입니다.형식의 배열 클래스 정의

//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'의 단일 인스턴스를 공유하도록 하시겠습니까? – 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' 라인은 클래스의'정적'멤버로 선언 되었기 때문에 필요합니다. 그것이 올바른지 아닌지는 의심 스럽습니다. OP에 대한 제 의견에 지적했듯이 말입니다. – Chad

+0

좋아요, 제가 지적했듯이 모든 사람의 이름과 나이가 같고 성별이 유용하지 않은 것으로 알고 있습니다 ... 그에 따라 샘플 코드를 변경하겠습니다. –

관련 문제