【发布时间】:2020-01-13 23:08:47
【问题描述】:
当我确保包含具有我正在制作向量的类的声明的头文件时,我无法理解为什么会收到“未声明的标识符”错误。
#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);
};
这里是“会员.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();
};
对这门语言还很陌生,所以我肯定遗漏了一些明显的东西。
【问题讨论】:
-
member.h 长什么样子?
-
我猜
Member.h包含Party.h并且你有一个循环依赖。 -
@Someprogrammerdude 猜得好! :)
-
解决问题的方法是打破循环包含依赖。这通常通过类的前向声明来完成。
-
@Anders 以前见过很多次... :)
标签: c++ object vector member undeclared-identifier