假设我在C++中有一个函数可以返回指向int,string或double的指针。这个函数的返回类型是什么?
我还想要一个变量,一旦函数返回它就可以存储该返回值。我应该只使用相同的类型吗?
答案 0 :(得分:2)
唯一的匹配是void*
。
void* pResult = foo();
要稍后使用该值,您必须转换为int*
,string*
或double*
。所以你需要以某种方式跟踪实际类型。
答案 1 :(得分:2)
一种方式是void*
方式,这在Philipp的回答中得到了证明
另一种方法是将您的类型封装在object
中,该Object
派生自某个公共基础对象(即Java
中的QObject
,Qt
中的QObject obj = foo();
,让你的函数返回公共基础对象。
{{1}}
检查您正在使用的库,也许您可以使用一些现有的公共基类。
不过,我认为模板功能也是解决问题的好方法。