地址未知类型?

时间:2017-09-06 22:19:23

标签: c++11

我的错误是编译器说地址不是persontype类型说明符的成员我的驱动程序是6个人类型的数组正在读取文件中的数据我创建了adresstype类型的地址,以便数据成员可以访问到adresstype的数据库,数据正确填写如何修复我的错误?

#include <iostream>
#include <fstream>
#include "personType.h"
#include <string>
using namespace std;
int main()
{
    personType members[6];
    string x, i1, i2;
    ifstream myfile;
    myfile.open("infile.txt");
    for( int i = 0; i < 6; i++)
    {
        myfile >> members[i].lastName  >> members[i].firstName >> members[i].personNum >> 
            members[i].personID >> members[i].address.streetAddressNum >>
 members[i].address.streetName >> members[i].address.streetType >> members[i].address.city >>             members[i].address.stateInitials >>  members[i].address.zipCode >> members [i].gender;
        myfile>> i1 >> i2; 
        members[i].setInterest1(i1);
        members[i].setInterest2(i2);
        members[i].printPerson();
    }    
    myfile.close();
    system("pause");    
    return 0;
#include <iostream>
#include <string>
using namespace std;
class personType
{
public:
    personType();
    string firstName;
    string lastName;
    int personNum;
    char gender;
    int personID;
    addressType address;
    void setInterest1(string interest1);//mutator
    void setInterest2(string interest2);
    void printPerson();
    string  GetInterest1() const;    // Accessor
    string  GetInterest2() const;
private:
    string SetInterest1;
    string SetInterest2;
};
class addressType {
public:
    addressType();
    string streetAddressNum, streetName, streetType, city, stateInitials;
    int zipCode;
};

1 个答案:

答案 0 :(得分:0)

您需要在addressType的定义之前移动personType的定义,因为后者具有addressType类型的成员。

// Define addressType before the definition of personType

class addressType {
   public:
      addressType();
      string streetAddressNum, streetName, streetType, city, stateInitials;
      int zipCode;
};

class personType
{
   public:
      personType();
      string firstName;
      string lastName;
      int personNum;
      char gender;
      int personID;

      // Can't use addressType as the type of member variable
      // unless addressType is defined first.
      addressType address;

      void setInterest1(string interest1);//mutator
      void setInterest2(string interest2);
      void printPerson();
      string  GetInterest1() const;    // Accessor
      string  GetInterest2() const;
   private:
      string SetInterest1;
      string SetInterest2;
};

此外,请勿在头文件中使用using namespace std;。请参阅Why is "using namespace std" considered bad practice?

删除该行,然后使用std::string而不只是string