我只是将指向类实例的指针传递给另一个类,但我无法从指针访问任何内容。这真的,真的开始让我烦恼。这是一个非常简单的代码示例:
//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搜索并尝试了我能做的一切。 有什么想法吗?
答案 0 :(得分:3)
为了能够做到这一点:
BClass* bc = new BClass(this);
Manager
需要BClass
的定义。这可能是bclass.h
。为了做到这一点
bcref->game;
BClass
需要Manager
的定义。这可能是manager.h
。
因此,您需要在另一个中包含每个标头,这将导致循环包含依赖项。您真正需要做的是通过将实现分别移动到bclass.cpp
和manager.cpp
来破坏依赖关系,并在标头中仅使用前向声明。