当我确保包含具有我要作为其向量的类的声明的头文件时,很难理解为什么会出现“未声明的标识符”错误。
#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);
};
这里是“ Member.h”
#pragma once
#include <vector>
#include <string>
#include "Party.h"
class Member
{
private:
int hp;
bool is_stunned;
bool is_alive;
public:
Member();
~Member();
int get_hp();
bool get_is_stunned();
bool get_is_alive();
void take_damage(int amt);
void stun();
virtual void turn(std::vector<Party>& parties, int my_party, int my_member_number);
virtual std::string get_class_name();
};
这门语言很新,所以请确保我缺少明显的内容。
答案 0 :(得分:0)
您在成员与党之间有循环依赖关系
删除行
virtual void turn(
std::vector<Party>& parties,
int my_party,
int my_member_number);
在Member中,然后删除Member.h中的#include "Party.h"
相反,请以为党只是会员的集合而已,因此不需要单个会员了解容器
因此,在@ some-programmer-dude输入之后,您还可以通过在Member.h中添加前向声明而不是包括Party.h来解决该问题。
class Party;
class Member { ... }