我在尝试使用我制作的“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/