[英]Two derived classes returning each other's type in method
我有類似的情況:
乙型肝炎
class B {...};
D1.hpp
class D1 : B {
D2 conversion_method(){ D2 d2(); ... return d2; };
}
D2.hpp
class D2 : B {
D1 conversion_method(){ D1 d1(); ... return d1; };
}
因此,這些類需要知道彼此的定義以返回正確的類型,我將如何處理此類問題? 我需要那些方法來返回類型(而不是指針),因為這是接口的要求。
可以做到這一點,但是不能使用內聯函數聲明。
這兩個類都需要在其頭文件中相互轉發聲明,即:
class D2;
class D1 : B {
D2 conversion_method();
}
和
class D1;
class D2 : B {
D1 conversion_method();
}
然后,在必須包含兩個頭文件的第三個頭文件或.cpp
文件中的某個位置,您可以定義兩個conversion_method
(),因為這兩個類的定義現已可用。
通過巧妙地使用附加的#include
和預處理器宏處理,可以安排事情,以便兩個頭文件都獲得#include
d后,將自動定義conversion_method
()的兩種實現。 這是通過讓每個頭文件#define
一些東西,然后#include
第三個頭文件來完成的。 第三個頭文件檢查兩個#define
是否都存在,然后繼續並定義兩個conversion_method
()。 這有效地完成了與您最初意圖相同的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.