我有以下基本模板类。
template<typename T>
class Base {
public:
void do_something() {
}
};
它旨在用作奇怪地重复出现的模板模式。它应该像class B : public Base<B>
一样被继承.它必须不像class B : public Base<SomeoneElse>
一样被继承.我想静态地执行这个要求。如果有人使用错误,我预计会在编译阶段出现错误。
我正在做的是放置一个 static_cast<T const&>(*this)
在 do_something()
.这样,继承模板的类就是或继承自作为模板参数提供的类。对不起,令人困惑的表达。用简单的英语来说,它需要 B
是或继承自 SomeoneElse
在 class B : public Base<SomeoneElse>
.
我不知道这是否是实现此目标的最佳方式。我觉得很恶心。
但是我想做更多。我想确保 B
是SomeoneElse
本身。我该怎么做?
最佳答案
构造Base
的构造函数(或析构函数)私有(private)的,然后制作T
一个friend
.这样唯一可以构造/破坏 Base<T>
的东西是 T
.
关于c++ - 如何在 C++ 中强制使用奇怪的重复模板模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30232004/