2014-06-16 59 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