【问题标题】:Enum of another class as parameter另一个类的枚举作为参数
【发布时间】:2012-01-12 17:35:12
【问题描述】:

我在 Item 类中有这个枚举

 enum EquipSlot
{
RightHand,
Head,
...
};

字符类有这个函数声明

void Character::UnequipSlot(Item::EquipSlot slot);

item 类不在任何命名空间中,也不属于另一个类。

我在实现中经常使用 Item::EquipSlot,没有错误。它只会在声明时给出编译错误。

调用另一个类的枚举的正确方法是什么?

(编译器是vc++ 9) 错误是:错误 C2027:使用未定义的类型“项目”(项目类在其他声明中使用)

谢谢。

【问题讨论】:

  • 我不知道你到底要什么?也许向我们展示编译器错误会有所帮助。所以会向我们展示你究竟做了什么来得到这个错误,以及你如何使用Item::EquipSlot 而不给你一个错误。基本上你的问题需要更多信息才能回答
  • 您可能会尝试通过编写涵盖您的问题的最小、完整的程序来说服自己发生了什么,然后编译或编译失败。这里的环境太模糊了。

标签: c++ class enums


【解决方案1】:

包括定义 Item的标头。

如果Item仅声明,则Item 可以在某些情况下使用,但在需要Item 的大小或内容时不能使用。

【讨论】:

  • 我正在使用预编译的头文件。它使用了项目类的前向声明,但还不够(为什么?)。现在我改变了 character.h 和 item.h 的顺序。有效。似乎前向声明没有提供足够的信息来使用枚举。
  • @mikbal:没错。前向声明仅向编译器保证该类存在。您会从该文件中Item 的其他用途中看到,不需要有关Item 的其他信息。
猜你喜欢
  • 2013-12-13
  • 2021-01-19
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2020-10-29
  • 2020-09-25
相关资源
最近更新 更多