![](/img/trans.png)
[英]C++ How to multiple inherits from interfaces with different return types?
[英]Return multiple types from c++ method?
c ++中的函數是否可能返回多種類型。 例如,
"return multiple types" getType( string choice )
{
if(choice == "A"){
ObjectA obj;
return obj;
}
if(choice == "B"){
ObjectB obj;
return obj;
}
else
return nullPtr;
}
在這里, ObjectA
和ObjectB
是兩種不同的類型。 根據用戶選擇,將返回兩種類型的Object。 這有可能嗎? 謝謝你的幫助。
**編輯:**該方法將如下使用
template <typename T>
void doStuff(T thing)
{
cout << thing.num << endl;
}
用法
doStuff(getType(selection));
ObjectA
和ObjectB
都將包含一個名為num
的公共變量。
這根本不可能。
C ++不是腳本語言,並且是靜態類型的,沒有任何反射。 函數返回類型(如變量類型)必須在編譯時定義,並且不能依賴於運行時執行。
您可以做的是讓ObjectA
和ObjectB
具有通用的多態基數,並返回一個指針或對其的引用:靜態類型將是該通用基數,而runtime-type將是實際的對象(它將響應虛擬函數)可以通過dynamic_cast
到達)
或者,您可以使用“類型取消”技術(例如boost :: any),該技術實際上將靜態類型化的對象包裝到另一個具有由處理程序管理的公共基址的對象中。
無論如何,都需要某種運行時類型的多態性(在對象中或在包裝器中)。
無論對象是什么,都返回一個指針,然后可以在其他地方進行任何類型檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.