簡體   English   中英

兩個派生類在方法中返回彼此的類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM