c++ - 不能使用在另一个 hpp 文件中定义的类

标签 c++ class include

我在尝试使用我制作的“userAux.hpp”文件中的“gameAux”类时遇到了一点问题。

这是我制作的两个hpp文件。

我把报错的地方标出来了。

userAux.hpp:

#include "gameAux.hpp"


class userAux{
   int gameId;
   int userId;
   int rate;
   gameAux aGame; <---error: ‘gameAux’ does not name a type
};

gameAux.hpp:

#include "userAux.hpp"

class gameAux{
  int gameId;
  userAux aUser; <--- OK
};

如果有人能指出问题所在,我将非常高兴:)

最佳答案

您不能让一个类包含另一个类的实例,而让另一个类包含第一个类的实例。这是无限递归,显然行不通。

答案是使用指针和前向声明。

class gameAux; // forward declaration

class userAux{
   int gameId;
   int userId;
   int rate;
   gameAux* aGame;
};

class gameAux{
  int gameId;
  userAux* aUser;
};

当两个类像这样相互依赖时,我很想将它们放在同一个头文件中。但是,如果您想要单独的头文件,那么您可以在其他类头文件中转发声明每个类。这样两个头文件都不需要包含另一个头文件。

关于c++ - 不能使用在另一个 hpp 文件中定义的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316737/

相关文章:

c++ - C++ 中的意外循环行为

c++ - 如果我有两个具有完全相同成员但名称不同的结构/类,是否有任何简单的方法可以将一个转换为另一个?

c++ - gsl::not_null<T*> 与 std::reference_wrapper<T> 与 T&

php - 包含来自单独文件夹的文件

c++ - 随机未在范围内声明

C - C 函数的作用域

c++ - CV_32FC1 转位图

java - 错误 ANDROID : Could not connect to SMTP host: smtp. gmail.com,端口 : 465, 响应:-1

javascript - 检查元素是否只有一个给定的类?

c++ - 没有匹配的函数来调用 [class]