术语或设计模式名称



我正在阅读一个源代码,其中有一个类定义如下:

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()声明。
  • 任何类层次结构。

这个设计模式叫做依赖注入。

最新更新