1 c++ oop polymorphism crtp static-polymorphism
我正在考虑为我的应用程序使用奇怪的重复模板模式.但是,我希望这些类能够在用户定义的类型上运行.我想了解是否可以创建类似于下面所示的结构:
template <class T_leaftype>
class BaseTrajectoryPoint {
};
template <class MyType>
class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint> {
private:
MyType A;
};
Run Code Online (Sandbox Code Playgroud)
上面的代码无法编译,出现以下错误:
模板参数列表中参数1的类型/值不匹配'模板类BaseTrajectoryPoint'
有没有其他方法来解决问题?我想使用静态多态,但我更喜欢在基类中定义所有可能的方法.
template <class T_leaftype>
class BaseTrajectoryPoint {
};
template <class MyType>
class MyTrajectoryPoint: public BaseTrajectoryPoint<MyTrajectoryPoint<MyType> > {
private:
MyType A;
};
Run Code Online (Sandbox Code Playgroud)
MyTrajectoryPoint它不是一种类型,它是模板; 当你将它作为模板参数传递时,它被视为template<typename> class T>,而不是template<class T>- 而后者是你的基类所期望的.但是MyTrajectoryPoint<MyType>命名一个类型,因此可以将它用作基类的模板参数.
当然,您可以更改BaseTrajectoryPointto的声明template<template<class> class T_leaftype>,但是您必须使用类模板作为模板参数,而不是完整类型.