3
我有一個基類和兩個派生類的繼承層次結構。基於繼承類型參數改變父虛擬函數的行爲
在基類,我有一個虛擬函數:
virtual void interact(const Base &other) const;
在派生類,它們都具有以下兩種功能,因爲這兩個派生類相互作用彼此不同,其是必要的(即Derived1
和Derived1
相互作用不同於Derived1
和Derived2
):
void interact(const Derived1 &other) const;
void interact(const Derived2 &other) const;
我希望能夠從vector<Base>
採取兩個對象,並調用VI實例Base
類方法(例如, base1.interact(base2)
),並根據派生類型在派生類中調用正確的函數。
有沒有一種方法可以做到這一點,或者我的方法完全錯誤?
該技術被稱爲「雙調度」,有各種實現。 –
同一個向量中的兩個對象顯然是相同的類型(向量的定義)。要「能夠從矢量中獲取兩個對象」很容易,但它們都是相同的類型。這似乎不是你的計劃。我建議不要投下來。 –