2014-06-16 87 views
0

首先,請允許我道歉,如果這個問題的標題是模糊的。C++函數返回不同的數據類型

這麼說,我想寫這將返回一個數字數據類型(全部由我定義),基於函數中的條件中的任何一個功能。從本質上說,我想要做的是這樣的:

{ 
    A itemA; 
    B itemB; 
    C itemC; 

    ... 

    Do some calculations 

    ... 

    if (some condition) 
     return itemA; 
    else if (some other condition) 
     return itemB; 
    else 
     return itemC; 
} 

當然,這個例子是有點做作,但我認爲,跨得到我的觀點。

的類A,B和C是一些其他的S類的所有子類,但我不希望返回S作爲如果我這樣做數據都將丟失。此外,即使返回類型超載,它的功能也不會真正改變,這似乎是愚蠢的。那麼,這應該是一個模板函數還是還有其他需要做的事情?

感謝,

+0

申報'itemA','itemB'和'itemC'作爲指針,動態地分配它們,定義函數返回類型爲'S *'(即,指針的基類)。歡迎來到多態的世界。 – 101010

+0

一個函數只能有一個返回類型。如果'S'是返回類型,會丟失什麼? – Gabe

+0

我沒有想過要這樣做,但是我不需要動態地輸出結果嗎? – user3593978

回答

0

如果返回一個指針或引用S,你不會有一個拼接的問題:

S* func() 
{ ... } 

請注意,您必須動態分配的變量。

+2

是不會,工作,如果A,B和C是局部變量如由OP的示例代碼。 – PaulMcKenzie