如何在C中强制使用奇怪的重复模板模式

我有以下基本模板类.
template<typename T>
class Base {
  public:
    void do_something() {
    }
};

它旨在用作奇怪的重复模板模式.它应该像B类一样继承:public Base< B>.它不能像B类一样继承:public Base< SomeoneElse>.我想静态地执行这个要求.如果有人使用了这个错误,我预计编译阶段会出错.

我正在做的是在do_something()中放入static_cast< T const&>(* this).这样,继承模板的类是继承自作为模板参数提供的类.抱歉这个令人困惑的表情.在简单的英语中,它要求B是或继承自B类中的SomeoneElse:public Base< SomeoneElse>.

我不知道这是否是实现这一目标的最佳方式.看起来很粗鲁.

但是我想做更多.我想确保B是SomeoneElse本身.我怎样才能做到这一点?

解决方法

使Base的构造函数(或析构函数)成为私有,然后使T成为朋友.这种方式可以构建/破坏Base< T>.是一个T.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...