如何在C中强制使用奇怪的重复模板模式
发布时间:2020-12-16 05:30:48 所属栏目:百科 来源:网络整理
导读:我有以下基本模板类. templatetypename Tclass Base { public: void do_something() { }}; 它旨在用作奇怪的重复模板模式.它应该像B类一样继承:public Base B.它不能像B类一样继承:public Base SomeoneElse.我想静态地执行这个要求.如果有人使用了这个错误
我有以下基本模板类.
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.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |