0

假设我在C++中有一个函数,它可以返回指向 int、string 或 double 的指针。这个函数的返回类型是什么?

我还想要一个变量,一旦函数返回它就可以存储该返回值。我应该为此使用相同的类型吗?

4

2 回答 2

2

唯一的匹配是void*.

 void* pResult = foo();

要稍后使用该值,您必须强制转换为int*,string*double*。因此,您需要以某种方式跟踪实际类型。

于 2013-01-05T02:30:46.760 回答
2

一种方式是void*菲利普的回答中所展示的方式

另一种方法是将您的类型封装在object从一些公共基础对象(即Objectin JavaQObjectin Qt)派生的 a 中,并让您的函数返回公共基础对象。

QObject obj = foo();

检查您正在使用的库,也许有一些您可以使用的现有公共基类。

顺便说一句,我认为模板函数也是解决您的问题的好方法。

于 2013-01-05T02:46:50.637 回答