Curiously recurring templates with template leaf classes
我正在考虑为我的应用程序使用奇怪的重复模板模式。但是,我希望类对用户定义的类型进行操作。我想知道是否可以创建类似于下面所示的结构:
1 2 3 4 5 6 7 8 9 10 | template <class T_leaftype> class BaseTrajectoryPoint { }; template <class MyType> class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint> { private: MyType A; }; |
以上代码编译失败,错误如下:
type/value mismatch at argument 1 in template parameter list for ‘template class BaseTrajectoryPoint’
有没有其他方法来解决这个问题?我希望使用静态多态性,但我更希望在基类中定义所有可能的方法。
1 2 3 4 5 6 7 8 9 10 | template <class T_leaftype> class BaseTrajectoryPoint { }; template <class MyType> class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint<MyType> > { private: MyType A; }; |
当然,您可以将
我们的朋友Griwes所说的是正确的,但是如果您知道将继承BaseTrajectoryPoint的每个类都是模板类,则可以执行以下操作:
1 2 3 4 5 6 7 8 9 | template<template < class > class TLeaf> // << This means: It is expected a template class as parameter class BaseTrajectoryPoint{ }; template <class MyType> class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint> >{ private: MyType A; }; |