1

我有以下类,当我尝试编译时,我收到一条错误消息,指出它不是一种类型。我究竟做错了什么?所有者.h

#ifndef OWNER_H
#define OWNER_H
#include <iostream>
#include <string>
#include "email.h"
#include "phone.h"

using namespace std;

class Owner 
{
public:
Owner();
Email ownerEmails();
private:
int intID;
string strFirstName;
string strLastName;
string strAddress1;
string strAddress2;
string strCity;
string strState;
int intZip;
};

#endif // OWNER_H

所有者.cpp

#include <iostream>
#include <string>
#include "owner.h"

using namespace std;

Owner::Owner()
{
}

Email Owner::ownerEmails()
{
Email e;
return e;
}

电子邮件.h

#ifndef EMAIL_H
#define EMAIL_H
#include "owner.h"
#include <iostream>
#include <string>

using namespace std;

class Email
{
public:
Email();
Email(int intID);
void setOwner(Owner o);
void setEmail(string email);
void setType(string type);
Owner getOwnerID();
private:
string getEmail();
string getType();
int intID;
Owner owner;
string strEmail;
string strType;
};

#endif // EMAIL_H
4

2 回答 2

1

在声明之前删除#include "email.h"并添加前向声明:class Emailclass Ownerowner.h

#ifndef OWNER_H
#define OWNER_H
#include <iostream>
#include <string>
//#include "email.h"
#include "phone.h"

using namespace std;

// forward
class Email;

class Owner 
{
    ...
};

#endif // OWNER_H
于 2013-06-05T17:07:35.523 回答
1

根据给定的信息猜测

  • Email嵌套在命名空间或其他类/结构中
  • email.h 拼写错误,您无意中忽略了无法找到 email.h 的错误(可能是 Email.h
  • 包含保护错误(可能是 email.h 中的 OWNER_H)

不对您对错误消息的解释做出任何假设...

  • 电子邮件是一个模板类
  • email.h 中某处缺少一个右括号
  • 在 email.h 或 phone.h 中的任何地方都没有定义电子邮件类型
于 2013-06-05T16:37:25.367 回答