C++ 获得';未声明的标识符';使用类类型的向量时

C++ 获得';未声明的标识符';使用类类型的向量时,c++,object,vector,member,undeclared-identifier,C++,Object,Vector,Member,Undeclared Identifier,当我确保包含包含声明了要生成向量的类的头文件时,我很难理解为什么会出现“未声明标识符”错误 #pragma once #include <vector> #include "Member.h" class Party { private: std::vector<Member> members; public: Party(); int get_party_size(); void add_member(Member new_membe

当我确保包含包含声明了要生成向量的类的头文件时,我很难理解为什么会出现“未声明标识符”错误

#pragma once
#include <vector>
#include "Member.h"

class Party {
private:
    std::vector<Member> members;

public:
    Party();
    int get_party_size();
    void add_member(Member new_member);
    Member& get_member(int num);

};
#pragma一次
#包括
#包括“Member.h”
班级聚会{
私人:
std::向量成员;
公众:
一方();
int get_party_size();
无效添加成员(成员新成员);
成员和获取成员(int num);
};
这是“Member.h”

#pragma一次
#包括
#包括
#包括“Party.h”
班级成员
{
私人:
int-hp;
布尔惊呆了;
布尔还活着;
公众:
成员();
~Member();
int get_hp();
bool get_震惊了();
bool get_是活着的();
无效损坏(整数金额);
无效眩晕();
虚拟无效回合(std::vector&parties、int my_party、int my_member_number);
虚拟std::字符串get_class_name();
};

这门语言很新,所以我肯定遗漏了一些明显的东西。

成员和政党之间存在循环依赖关系

拆下线路

virtual void turn(
  std::vector<Party>& parties, 
  int my_party, 
  int my_member_number);

member.h是什么样子的?我猜
member.h
包括
Party.h
并且你有一个循环依赖项。@Someprogrammerdude猜得好!:)解决问题的方法是打破循环包含依赖关系。这通常是通过类的前向声明来完成的。@Anders很久以前就看到过这种情况…:)您说需要删除的函数声明实际上不需要删除。这一行本身并不取决于
Party
类的完整定义,它所需要的只是一个前瞻性声明。是的,你是对的,但我是从设计的角度来看的,如果成员对Party没有依赖性,那会更好。但是嘿,我知道他需要什么吗:)
virtual void turn(
  std::vector<Party>& parties, 
  int my_party, 
  int my_member_number);
class Party;

class Member { ... }