c++模板不止一个原型
c++ templates more than one prototype
我有一个相对复杂的模板,里面有很多参数(大多数都有默认值)。例如:
template <typename I,
typename S = BasicS<I>,
typename C = BasicC<I>,
typename E = BasicE<I> >
class Foo ...
不幸的是,无论我选择什么顺序的论点,总有一些情况下你可能只想改变最后一个。
说,我如何为同一个模板创建更多的原型
template <typename I,
typename E>
class Foo1 : Foo<I, BasicS<I>, BasicC<I>, E >
{
... redefine the constructors
};
但是没有继承以避免重新定义构造函数的需要
您可以使用C++11的模板别名实现这一点:
template <typename I, typename E>
using Foo1 = Foo<I, BasicS<I>, BasicC<I>, E>;
假设(根据您的评论)您不能使用C++11,您可以使用嵌套的typedef:
template <typename I, typename E>
struct Foo1 {
typedef Foo<I, BasicS<I>, BasicC<I>, E> type;
};
template <typename I, typename C>
struct Foo2 {
typedef Foo<I, BasicS<I>, C> type;
};
然后会这样使用:
Foo1<MyI, MyE>::type myFoo;
当然,您也可以将原始的Foo
重命名为GenericFoo
或其他什么,并为其提供一个带有typedef的Foo
结构,以便提供一致的接口。
假设您可以接受不同的名称,则可以使用using
别名:
template <typename I, typename E>
using Foo1 = Foo<I, BasicS<I>, BasicC<I>, E>;
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 函数在类中声明时应该有一个原型
- 将多个原型文件包含在一个项目中会导致protobuf_AssignDescriptorsOnce()已经有一个主体
- 如何调用其原型在另一个函数中范围内的函数
- 我如何在C 中创建一个函数原型,该函数原型接受两个整数作为参数并返回其差异
- c++模板不止一个原型
- 一个声明中多个函数的原型
- 从另一个小部件创建小部件作为原型
- 编译器声明调用没有匹配的函数,即使原型中有一个
- 一个带有“与”符号的函数原型意味着什么
- XXX的原型::XXX与类XXX中的任何一个都不匹配
- 当一个参数在函数原型中被赋值时,这意味着什么
- 为什么你可以把一个函数原型放在一个函数里面
- 我不能有一个将多个整数作为参数的构造函数方法/原型吗?阿杜伊诺
- 如何为一个期望istream的方法定义原型
- 在不复制代码的情况下,从工厂实例化一个对象(如炮塔)的草稿(即原型)
- 需要为原型函数创建一个单独的cpp文件
- 调用没有这些虚拟原型的继承类的一个方法
- C++:使用一个函数的输出作为带有函数原型的头文件中另一个函数的参数
- int* const* foo(int x);是一个有效的 C 函数原型。您如何"read"此返回类型?