2017-03-26 26 views
0

我有一個很奇怪的要求。我有兩個我的類的成員函數,它們分別接收不同對象的引用(但兩個對象通過繼承關聯)。現在我希望能夠在我的課程的其他成員函數中使用這兩種不同類型的引用(取決於使用情況,我只會得到一個,但從來沒有在一起)。如何實現這一點。我知道這聽起來有點古怪,但我的類的實例將被用作其他進程的插件,並且「必須」從流程框架擁有的純虛擬類中派生我的類並覆蓋我剛剛提到的那兩個成員函數。有沒有辦法呢?如何在類的其他成員函數中重用傳遞的引用?

爲了說明這樣的場景:

func1(const Data& params, MyParent& parent); 
func2(const Data& params, MyChild& child); 

上面是兩個成員函數,我要重寫並沒有我可以改變調用的模式,我必須忍受這些非const引用

有沒有什麼辦法可以讓我們說與MyParent& parentMyChild& child,但從來都沒有?我不想直接從func1()func2()撥打電話myfunc(),因爲我想要在兩者之間完成一些處理,然後我想在所有處理之後排隊處理所有待完成的任務,並最終通過MyParent& parent撥打myfunc()MyChild& child,但從來都沒有。

在此先感謝您的幫助。

回答

0

在C++中有函數或方法overloading。你應該簡單地聲明你的方法與兩種類型和編譯器將選擇哪個應該執行:

myfunc(MyParent& parent); 
myfunc(MyChild& child); 
+0

我知道我可以使用重載函數。但是,如果我有15個這樣的'myfunc()'怎麼辦?這意味着我需要寫30。 – Mariners

+0

是的,你將不得不。你可以嘗試用'std :: variant'來做一些糟糕的設計,但是我不會這麼做。 –

+0

模板。 template void myfunc(MyParentOrChild&parentOrChild){} –

相關問題