C模板专业化

C模板专业化,第1张

概述你好!有人知道实现或模仿以下行为的方法吗? (此代码导致编译时错误). 例如,我想仅在派生类中添加特定的模板特化. struct Base { template <typename T> void Method(T a) { T b; } template <> void Method<int>(int a) { float c; }};st 你好!有人知道实现或模仿以下行为的方法吗?
(此代码导致编译时错误).

例如,我想仅在派生类中添加特定的模板特化.

struct Base {   template <typename T> voID Method(T a) {      T b;   }   template <> voID Method<int>(int a) {      float c;   }};struct Derived : public Base {   template <> voID Method<float>(float a) {      float x;   }};
解决方法 怎么过载

struct Base {   template <typename T> voID Method(T a) {      T b;   }   voID Method(int a) {      float c;   }};struct Derived : public Base {   using Base::Method;   voID Method(float a) {      float x;   }};

无法像示例中那样添加显式特化.此外,您的Base类格式不正确,因为您必须在类的范围之外定义任何显式特化

struct Base {   template <typename T> voID Method(T a) {      T b;   }};template <> voID Base::Method<int>(int a) {   float c;}

所有显式特化都需要将模板的名称赋予特殊性,或者与模板位于同一范围内.你不能像这样在Derived类中编写显式的特化.

总结

以上是内存溢出为你收集整理的C模板专业化全部内容,希望文章能够帮你解决C模板专业化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存