gpt4 book ai didi

c++ - 错误 : C2146: syntax error : missing ';' before identifier 'm_Employer' ,

转载 作者:行者123 更新时间:2023-11-28 00:11:54 25 4
gpt4 key购买 nike

连同错误“C4430 missing type specifier int assumed”x2 和 C2061 syntax Errors Employer 代码:

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

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

雇 main.cpp

    #include "employer.h"

Employer::Employer()
{

}

Employer::Employer(QString name, QString market)
{
m_Name = name;
m_Market = market;
}

QString toString()
{
return "";
}

位置.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

位置.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 时,它是一个未知类型。

关于c++ - 错误 : C2146: syntax error : missing ';' before identifier 'm_Employer' ,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32577525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com