使用类型类的向量时获取“未声明的标识符”

时间:2019-09-12 05:56:28

标签: 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_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();

};

这门语言很新,所以请确保我缺少明显的内容。

1 个答案:

答案 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 { ... }