C模板专业化

你好!有人知道实现或模仿以下行为的方法吗?
(此代码导致编译时错误).

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

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模板化函数可以选择成员变量吗?