我正在阅读一个源代码,其中有一个类定义如下:
template<typename T>
class C {
...
T * func() {
const_cast<C *>(this)->somefunc();
...
}
};
我无法理解这种语法的哲学或目的。这是什么,这种代码的应用是什么?我想知道正式的术语/定义或设计模式的相同。
编辑: somefunc()
的实现如下:
void somefunc() {
anotherfunc(*this);
}
和anotherfunc()
是:
template<typename T>
inline void anotherfunc(C<T> & a)
{
throw std::runtime_error(std::string("blah blah blah")
+ typeid(T).name());
}
然后在代码中有如下类:
class F {
func_1();
func_2();
func_3();
}
C
的实例化如下:
C<F> inst;
则访问F
内的函数inst->func_1();
。
如果您的目标是重定向API以使用现有API,而不强制客户端更改代码。
如果你能提供更多关于
的内容- somefunc()声明。
- 任何类层次结构。
这个设计模式叫做依赖注入。