【发布时间】:2013-11-15 01:59:54
【问题描述】:
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”错误。
我怎样才能做到这一点>
【问题讨论】:
-
另外 myobject 只有在 if else 块中有作用域。在上面声明它并让它在 if else 块中分配
-
@JamilSeaidoun 但是要在
if之前声明它,我们需要“类型”信息,我们需要i来确定类型