我的搜索使我相信我遇到的问题称为循环冗余。我不明白发布的任何解决方案。我(相当)是 C++ 新手,来自强大的 Java 背景。
基本上有两个相互依赖的类。A 类包含 B 类对象的向量,B 类包含需要 A 类对象作为输入的方法。
这是重现问题的代码。
根据codelite g++,错误在school.h中并且是“人没有在这个范围内声明”。它还说“模板参数 1 无效”和“模板参数 2 无效”。然后是其他几个,关于所有被调用的向量函数的非类类型“int”。
主文件
#include <iostream>
#include <string>
#include "person.h"
#include "school.h"
int main() {
person p;
school s;
std::cout << p.name << std::endl;
s.personVect.push_back(p);
std::cout << s.personVect.size() << std::endl;
std::cout << s.personVect.at(0).name << std::endl;
p.test();
return 0;
}
学校.h
#ifndef SCHOOL_H
#define SCHOOL_H
#include <vector>
#include "person.h"
class school
{
public:
school();
~school();
std::vector<person> personVect;
};
#endif // SCHOOL_H
学校.cpp
#include "school.h"
school::school(){}
school::~school(){}
人.h
#ifndef PERSON_H
#define PERSON_H
#include <string>
#include <vector>
#include "school.h"
class person {
public:
std::string name;
std::string phone;
school doSomethingWithSchool();
void test();
person();
~person();
};
#endif // PERSON_H
个人.cpp
#include "person.h"
#include <iostream>
using namespace std;
person::person()
{
name = "marcus";
phone = "0400000000";
}
person::~person()
{
}
void person::test() {
cout << this->name;
}
school person::doSomethingWithSchool() {
school s;
}