模板方法的接口
Interface for template methods
我有一个类Foo
,它提供某种功能。为了保持模块化,Foo
是一个接口(也就是说,一个只有抽象方法的c++类),而Foo的实现可以选择如何精确地实现功能。但是,我的接口包含一个模板方法。也就是
class Foo
{
public:
template<class T>
void functionality(const T&);
};
在C++
中不可能有模板方法virtual
。是否有任何技术可以通过模板方法实现类似的结果(模块化和多态性)?
不能将运行时多态性直接与模板混合使用。然而,另一层间接性可能会有所帮助。下面是一个做作的例子:
template <typename T>
inline void *New( void )
{
return new T( );
}
只要存在默认构造函数,该函数允许用户动态分配任何类型的对象。现在取一个函数指针并将其赋值给这个新函数:
void *(*NewFuncPtr)( void ) = New<int>;
int *i = (int *)NewFuncPtr( );
函数指针本身没有模板化,但可以指向被模板化的函数。也许这也能解决你的问题。
相关文章:
- 将成员函数指针作为参数传递给模板方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- C++11:模板方法的模板函数调用无法编译?
- 如何从ECS中的模板方法获取组件?
- 使用 SFINAE 设计模板方法
- 一个模板方法,用于同时接受常量和非常量参数
- C++模板方法中的循环依赖关系
- 在 C++ 中使用模板方法重写类方法
- 类中的模板方法
- 基于枚举参数调用专用模板方法
- 模板中的模板方法 - 实例声明和类方法声明签名不同
- 可变参数模板方法
- 使用模板方法为标头提供空 cpp 时出现问题
- SFINAE 方法在 clang 中完全禁用基类的模板方法
- 将函数和成员函数传递给模板方法
- 从非模板类调用专用模板方法
- MSVC使用constexpr-if从可变模板方法中的基本模板参数中吞下const
- 依赖于特定类类型的C++模板方法
- C++创建具有可变参数模板方法的接口
- 模板方法的接口