class mypair {
T a, b;
public:
mypair (T first, T second)
{a=first; b=second;}
T getmax ();
};
template <class T>
T mypair<T>::getmax ()
{
T retval;
retval = a>b? a : b;
return retval;
}
int main () {
int i;
cin>>i;
if(i==0)
mypair <int> myobject (100, 75);
else
mypair <float> myobject (100, 75);
cout << myobject.getmax();
return 0;
}
我想根据 i 的值创建我的模板类的单个对象。如果 i 的值为 0,则创建一个数据类型为 int 或 float 的模板类。 上面的程序在我调用 getmax 函数的倒数第二行抛出错误“myobject”未在此范围内声明。
我怎样才能做到这一点>
最佳答案
为什么不写一个函数模板来完成这项工作?
template <typename T>
doStuff()
{
mypair <T> myobject (100, 75);
std::cout << myobject.getmax();
}
然后
if(i==0)
doStuff<int>();
else
doStuff<float>();
关于c++ - 多种数据类型的单个模板对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19984705/