我有以下类定义:
// A TileBase contains a deceleration for game events that will be present in
// Static and Dynamic tiles
class TileBase
// To use tiles in your game, create a tile base for Tile to inherit from, then
// create game-specific tiles as derivitives of StaticTile or DynamicTile
template<typename aTileBase> class Tile : public aTileBase
类
StaticTile
和DynamicTile
派生自Tile
。目标是通过动态强制转换在所有TileBase
派生类中的Tile
中声明的方法。我想将
Tile
的模板定义限制为仅接受从TileBase
派生的数据类型。有什么方法可以在运行时不使用动态强制转换和断言来完成此任务? 最佳答案
使用std::is_base_of<>
很容易做到
template<typename aTileBase>
class Tile : public aTileBase {
static_assert(std::is_base_of<TileBase, aTileBase>::value, "");
[...]
};