我只是将一个类的实例的指针传递给另一个类,但是我无法从该指针访问任何内容。真的,真的开始惹恼我。这是一个非常简单的代码示例:

//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.cppmanager.cpp来打破依赖关系,并仅在标头中使用前向声明。

08-06 13:13