格式化代码:http://pastie.org/5074835循环依赖 - 向前声明不够
我有实体类和组件类之间的循环依赖。 我尝试转发类声明,但我必须访问组件的更新方法,这种方式我不能。
有没有办法让这项工作无需重新设计?
格式化代码:http://pastie.org/5074835循环依赖 - 向前声明不够
我有实体类和组件类之间的循环依赖。 我尝试转发类声明,但我必须访问组件的更新方法,这种方式我不能。
有没有办法让这项工作无需重新设计?
您需要#include "Entity.h"
在Component.cpp
。
对不起,我忘了把它放在pastie中。包含在我的源代码中,并且该文件没有问题。问题出在Entity.cpp第26行,update()不被识别 –
和Entity.cpp中的#include
@Vee下次复制粘贴代码!!!! –
用所有方法声明这两个类,然后定义metods?
头:
class B;
class A {
void method1(B b);
};
class B {
void method2(A a);
}
源文件:
void A::method1(B b){
...
}
void B::method2(A a){
...
}
这就是他已经在做的事情。 –
有一个在包括在Component.cpp
Entity.h
和Component.h
在Entity.cpp
没有问题。如果将它们包含在头文件中,将会产生循环依赖。所以继续和#include "Entity.h" in
Component.cpp`。
这个馅饼已经过时了,对不起。我试过这样做。包含在我的源代码中,并且该文件没有问题。问题出在Entity.cpp第26行,update()不被识别 –
+1对于包含*的*没有问题,但是**是**循环依赖关系,不论标头是否包含对方。依赖关系是一个设计概念,头文件/实现文件是一个实现概念。 –
@Vee,但是你已经在'Entity'的其他方法中使用了'Component'的方法,所以'update()'应该被识别。 –
您必须在Component.cpp中定义update-和init-method – AquilaRapax
-1为了不在问题中提供代码,并且还提供了一个指向代码不是导致错误的代码的外部站点的链接。 –
为什么你更喜欢重写代码而不是复制粘贴?为什么??? –