我只是将一个类的实例的指针传递给另一个类,但是我无法从该指针访问任何内容。真的,真的开始惹恼我。这是一个非常简单的代码示例:
//manager.h
Game* game = new Game();
BClass* bc = new BClass(this);
//bclass.h
BClass(Manager* bcref) {
bcref->game //error
bcref->bc //error
}
//The errors are "left of ->x must point to class/struct/union/generic type.
我了解这是因为我需要转发声明,但需要添加诸如“类管理器”之类的东西。在顶部似乎什么也没做。我仍然无法访问成员或方法。我真的在尝试做一件非常简单的事情,而且我已经把头发拉了好几个小时了。我已经用Google搜索并尝试了几乎所有可能的方法。
有任何想法吗?
最佳答案
为了能够做到这一点:
BClass* bc = new BClass(this);
Manager
需要BClass
的定义。大概在bclass.h
中。为此bcref->game;
BClass
需要Manager
的定义。大概在manager.h
中。因此,您需要将每个标头包含在另一个标头中,这将导致循环包含依赖关系。您真正需要做的是通过将实现分别移动到
bclass.cpp
和manager.cpp
来打破依赖关系,并仅在标头中使用前向声明。