假设我在C++中有一个函数,它可以返回指向 int、string 或 double 的指针。这个函数的返回类型是什么?
我还想要一个变量,一旦函数返回它就可以存储该返回值。我应该为此使用相同的类型吗?
唯一的匹配是void*
.
void* pResult = foo();
要稍后使用该值,您必须强制转换为int*
,string*
或double*
。因此,您需要以某种方式跟踪实际类型。
一种方式是void*
菲利普的回答中所展示的方式
另一种方法是将您的类型封装在object
从一些公共基础对象(即Object
in Java
,QObject
in Qt
)派生的 a 中,并让您的函数返回公共基础对象。
QObject obj = foo();
检查您正在使用的库,也许有一些您可以使用的现有公共基类。
顺便说一句,我认为模板函数也是解决您的问题的好方法。