C++ 'Email'不命名类型

C++ 'Email' Does Not Name A Type

本文关键字:类型 Email C++      更新时间:2023-10-16

我有以下类,当我试图编译时,我得到一个错误,指出它不是类型。我做错了什么?Owner.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

Owner.cpp

#include <iostream>
#include <string>
#include "owner.h"
using namespace std;
Owner::Owner()
{
}
Email Owner::ownerEmails()
{
Email e;
return e;
}

email.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

删除#include "email.h",在owner.h声明class Owner之前增加class Email的前向声明:

#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

根据给定信息进行猜测

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

对错误信息的解释不做任何假设…

    Email是一个模板类
  • email中缺少一个右括号。h
  • 在Email .h或phone.h中没有定义Email类型