部分专用化:使用主模板成员
Partial specialization: use the primary template members
>考虑
enum My_Enum {
x1, x2
};
template<class T, My_Enum X>
class A {
void f1();
void f2();
};
template<class T>
class A<T,x1> {
void g();
}
我想在我的部分专用模板中使用主模板f1()
和f2()
的成员函数。我该怎么办?
一种解决方案是不进行部分专业化,然后:
template<class T>
class AA<T> : public A<T,x1> {
void g();
}
但它的缺点是,当我通过泛型编程来识别各种A<T,X>
时,我的A<T,x1>
不再是 AA<T>
类型,因此我无法应用A<T,x1>.g()
知道吗?
如何为类 A 创建一个定义这些方法的基类?
template <class T, My_Enum X>
class A_Base {
void f1();
void f2();
};
template<class T, My_Enum X>
class A : public A_Base<T, X> {
};
template<class T>
class A<T,x1> : public A_Base<T, x1> {
void g();
};
您可以创建一个基类:
template<class T, My_Enum X>
class BaseA {
void f1();
void f2();
};
template<class T, My_Enum X>
class A : BaseA<T,X> {
};
template<class T>
class A<T,x1> : BaseA<T,x1> {
void g();
};
相关文章:
- 静态数据成员模板专用化的实例化点在哪里
- 成员变量如何使用专用类模板?
- GCC 7 中模板类的模板成员函数的专用化
- C++ 类模板部分专用化,而不专用化所有成员函数
- 专用于可变参数模板成员函数
- 对专用模板成员的未定义引用
- 对类模板成员的显式专用化的约束
- 类模板成员函数的专用化
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 类成员函数的函数模板专用化
- '将成员函数仅添加到类的专用模板
- 静态数据成员的模板专用化
- 在实例化封闭类模板之后,我们可以声明模板类成员的部分专用化吗
- 如何部分专用化非成员和成员函数指针的结构模板
- 如何将类成员专用于多个模板值(常量)?
- 模板类中的模板成员专用化
- "expected initializer before '<' token"尝试模板成员专用化
- 模板化子类和模板化基类的静态成员专用化
- 数组的部分模板成员专用化
- 头中没有声明的模板类成员专用化