2012-03-19 160 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

相关问题