我的错误是编译器说地址不是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;
};
答案 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
。