格式化代碼: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爲了不在問題中提供代碼,並且還提供了一個指向代碼不是導致錯誤的代碼的外部站點的鏈接。 –
爲什麼你更喜歡重寫代碼而不是複製粘貼?爲什麼??? –