error: C2146: syntax error : missing ';' before identifier 'm_Employer',
error: C2146: syntax error : missing ';' before identifier 'm_Employer',
连同错误 "C4430 missing type specifier int assumed" x2 和 C2061 语法错误 Employer
代码:
Person.h
#ifndef PERSON_H
#define PERSON_H
#include "employer.h"
#include "position.h"
#include <QTextStream>
#include <QString>
class Person
{
private:
QString m_Name;
bool m_Employed;
此处出现语法错误且缺少类型说明符:
Employer m_Employer;
Position m_Position;
public:
Person();
Person(QString name);
QString toString();
这里有语法错误
void setPosition(Employer &newC, Position &newP);
void getPosition();
void getEmployer();
};
#endif // PERSON_H
Person.cpp
#include "person.h"
Person::Person()
{
m_Name = "";
}
Person::Person(QString name)
{
m_Name = name;
}
QString Person::toString()
{
return "";
}
void Person::setPosition(Employer &newC, Position &newP)
{
}
Employer.h 文件:
#ifndef EMPLOYER_H
#define EMPLOYER_H
#include "person.h"
#include <QTextStream>
#include<QString>
class Employer
{
private:
QString m_Name;
QString m_Market;
public:
Employer();
Employer(QString name, QString market);
这里有语法错误
bool hire(Person &newHire, Position pos);
QString toString();
};
#endif // EMPLOYER_H
Employer.cpp
#include "employer.h"
Employer::Employer()
{
}
Employer::Employer(QString name, QString market)
{
m_Name = name;
m_Market = market;
}
QString toString()
{
return "";
}
Position.h 文件:
#ifndef POSITION_H
#define POSITION_H
#include <QTextStream>
#include <QString>
class Position
{
private:
QString m_Name;
QString m_Description;
public:
Position();
Position(QString name, QString description);
~Position();
QString toString();
};
#endif // POSITION_H
Position.cpp 文件:
#include "position.h"
Position::Position()
{
m_Name = "";
m_Description = "";
}
Position::Position(QString name, Qstring description)
{
m_Name = name;
m_Description = description;
}
QString Position::toString()
{
return "";
}
我也有一个主电源,但它没有被使用,我想在出现更多问题之前解决这些问题
我一直在查看这个,但我似乎无法找出问题所在,非常感谢任何帮助,提前谢谢你。
你有循环依赖。 Person.h
包括 Employer.h
其中包括 Person.h
.
您可以在 Employer.h
:
中转发声明 Person
将class Person;
添加到Employee.h
并将#include "person.h"
移动到Employee.cpp
错误的来源是当编译器去编译Employer.cpp
(或Person.cpp
哪个并不重要)时,它包括Employer.h
,它告诉编译器包含 Person.h
,这告诉编译器包含 Employer.h
,但这次包含守卫启动并停止再次包含 Employer.h
的内容。所以它开始编译 Person.h
而没有提到 Employer
。因此,当它看到 Employer m_employer
.
时,它是一个未知类型
连同错误 "C4430 missing type specifier int assumed" x2 和 C2061 语法错误 Employer 代码:
Person.h
#ifndef PERSON_H
#define PERSON_H
#include "employer.h"
#include "position.h"
#include <QTextStream>
#include <QString>
class Person
{
private:
QString m_Name;
bool m_Employed;
此处出现语法错误且缺少类型说明符:
Employer m_Employer;
Position m_Position;
public:
Person();
Person(QString name);
QString toString();
这里有语法错误
void setPosition(Employer &newC, Position &newP);
void getPosition();
void getEmployer();
};
#endif // PERSON_H
Person.cpp
#include "person.h"
Person::Person()
{
m_Name = "";
}
Person::Person(QString name)
{
m_Name = name;
}
QString Person::toString()
{
return "";
}
void Person::setPosition(Employer &newC, Position &newP)
{
}
Employer.h 文件:
#ifndef EMPLOYER_H
#define EMPLOYER_H
#include "person.h"
#include <QTextStream>
#include<QString>
class Employer
{
private:
QString m_Name;
QString m_Market;
public:
Employer();
Employer(QString name, QString market);
这里有语法错误
bool hire(Person &newHire, Position pos);
QString toString();
};
#endif // EMPLOYER_H
Employer.cpp
#include "employer.h"
Employer::Employer()
{
}
Employer::Employer(QString name, QString market)
{
m_Name = name;
m_Market = market;
}
QString toString()
{
return "";
}
Position.h 文件:
#ifndef POSITION_H
#define POSITION_H
#include <QTextStream>
#include <QString>
class Position
{
private:
QString m_Name;
QString m_Description;
public:
Position();
Position(QString name, QString description);
~Position();
QString toString();
};
#endif // POSITION_H
Position.cpp 文件:
#include "position.h"
Position::Position()
{
m_Name = "";
m_Description = "";
}
Position::Position(QString name, Qstring description)
{
m_Name = name;
m_Description = description;
}
QString Position::toString()
{
return "";
}
我也有一个主电源,但它没有被使用,我想在出现更多问题之前解决这些问题 我一直在查看这个,但我似乎无法找出问题所在,非常感谢任何帮助,提前谢谢你。
你有循环依赖。 Person.h
包括 Employer.h
其中包括 Person.h
.
您可以在 Employer.h
:
Person
将class Person;
添加到Employee.h
并将#include "person.h"
移动到Employee.cpp
错误的来源是当编译器去编译Employer.cpp
(或Person.cpp
哪个并不重要)时,它包括Employer.h
,它告诉编译器包含 Person.h
,这告诉编译器包含 Employer.h
,但这次包含守卫启动并停止再次包含 Employer.h
的内容。所以它开始编译 Person.h
而没有提到 Employer
。因此,当它看到 Employer m_employer
.