2012-10-18 25 views
-3

格式化代码:http://pastie.org/5074835循环依赖 - 向前声明不够

我有实体类和组件类之间的循环依赖。 我尝试转发类声明,但我必须访问组件的更新方法,这种方式我不能。

有没有办法让这项工作无需重新设计?

+0

您必须在Component.cpp中定义update-和init-method – AquilaRapax

+0

-1为了不在问题中提供代码,并且还提供了一个指向代码不是导致错误的代码的外部站点的链接。 –

+0

为什么你更喜欢重写代码而不是复制粘贴?为什么??? –

回答

3

您需要#include "Entity.h"Component.cpp

+0

对不起,我忘了把它放在pastie中。包含在我的源代码中,并且该文件没有问题。问题出在Entity.cpp第26行,update()不被识别 –

+0

和Entity.cpp中的#include 没有必要 – AquilaRapax

+0

@Vee下次复制粘贴代码!!!! –

0

用所有方法声明这两个类,然后定义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){ 
    ... 
} 
+0

这就是他已经在做的事情。 –

1

有一个在包括在Component.cppEntity.hComponent.hEntity.cpp没有问题。如果将它们包含在头文件中,将会产生循环依赖。所以继续和#include "Entity.h" in Component.cpp`。

+0

这个馅饼已经过时了,对不起。我试过这样做。包含在我的源代码中,并且该文件没有问题。问题出在Entity.cpp第26行,update()不被识别 –

+0

+1对于包含*的*没有问题,但是**是**循环依赖关系,不论标头是否包含对方。依赖关系是一个设计概念,头文件/实现文件是一个实现概念。 –

+0

@Vee,但是你已经在'Entity'的其他方法中使用了'Component'的方法,所以'update()'应该被识别。 –