c++ - 多种数据类型的单个模板对象

标签 c++ templates

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/

相关文章:

c++指向基类的指针没有派生类成员函数,但是指针是用派生创建的

c++ - C++ 模板的实例化惰性规则

jquery - 无法使用 jquery 定位使用 Mustache.js 渲染的元素

c++ - 用模板实现派生类

C++:友好模板参数的模板类型成员的正确语法?

c++ - read_some/write_some 和接收/发送之间的区别?

c++ - Fstream 的 tellg/seekg 返回值高于预期

c++ - unique_ptr 在 C++ 中的用法

c++ - CreateDirectory 报告失败,但错误代码为 ERROR_SUCCESS

c++ - 将函数指针传递给 Variadic 模板函数