加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C:如何获取变量的类型并将其用作模板

发布时间:2020-12-16 10:17:54 所属栏目:百科 来源:网络整理
导读:我正在为以这种方式声明的函数的C编写一个包装器: class MyClass{public: template class T T as();}; 我的包装器需要消除显式模板,因为我不想调用myClass.as int(); 所以我尝试实现以这种方式声明的新函数: class MyClass2 : public MyClass{public: temp
我正在为以这种方式声明的函数的C编写一个包装器:

class MyClass
{
public:
  template <class T>
  T& as();
};

我的包装器需要消除显式模板,因为我不想调用myClass.as< int>();

所以我尝试实现以这种方式声明的新函数:

class MyClass2 : public MyClass
{
public:
  template <class T>
  void get(T & val);
};

通过这种方式我可以打电话

int a;
myClass2.get(a);

有没有办法实现这个函数,所以类型是在运行时根据参数类型传递的?就像是:

template <class T>
void MyClass2::get(T & val)
{
  val = as< typeof(val) >();  /* Of course typeof does not exist */
}

非常感谢您的帮助.

解决方法

这根本不符合逻辑.为什么不写:

template <class T>
void MyClass2::get(T & val)
{
  val = as< T >();
}

由于type是模板参数,因此不需要typeof.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读