【发布时间】:2021-10-22 17:23:55
【问题描述】:
#include<iostream>
using namespace std;
template<class T>
T func()
{
T a;
cout<<"Enter value of a : ";
cin>>a;
return a;
}
int main()
{
void*ptr;
ptr=&func<void>();
// How to get returned value from template function as i don't know what
// will its data type???
return 0;
}
【问题讨论】:
-
它将是无效的,因为您将 void 作为
T传递。但它不会编译。 -
这就是
auto派上用场的地方:auto value = func<T>();。请注意,类型仍然在编译时分配,您不必再次键入它。您的代码错误 - 获取临时变量的地址将使ptr无法使用。 -
如何解决这个问题我想获取未知变量,我不知道它的数据类型是 int 还是 string 或者 float 还是 char 我不知道因为函数是模板所以如何获得这个值?