虚拟和模板方法C++
Virtual & Template method C++
我有两个方法的相同实现,它们都将参数插入到文本文件中。
void WriteToFile( double content) //for double
{
streamFile << content;
streamFile << flush;
}
void WriteToFile( int content) //for integer
{
streamFile << content;
streamFile << flush;
}
实现是相同的,因此我将它们合并到一个模板方法中:
template < class T>
void WriteToFile(T content)
{
streamFile << content;
streamFile << flush;
}
但是WriteToFile()
方法应该是虚拟的
我该怎么处理?
您还不能创建虚拟模板化方法
但是,如果你想要模板,这样你就不必到处都有代码,你可以从重载的方法中调用模板化的方法(代码重用):
template < class T>
void WriteToFileT(T content)
{
streamFile << content;
streamFile << flush;
}
virtual void WriteToFile( double content) //for double
{
WriteToFileT(content);
}
virtual void WriteToFile( int content) //for integer
{
WriteToFileT(content);
}
有很多关于这个的讨论。。。
C++类成员函数模板可以是虚拟的吗
C++虚拟模板方法
如何实现";虚拟模板函数";在C++中
获得"模板化虚拟方法"的一个技巧是在基类中有一个模板化的非虚拟方法,完成所有模板工作,然后将结果以运行时多态形式传递给虚拟助手函数。例如,在基类中可以有一个template<typename T> void WriteToFile(T)
,它将参数转换为字符串,然后将该字符串传递给virtual void WriteToFile_aux(string)
方法。
当然,这依赖于能够将参数多态性与亚型多态性分离开来。
相关文章:
- 将成员函数指针作为参数传递给模板方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- C++11:模板方法的模板函数调用无法编译?
- 如何从ECS中的模板方法获取组件?
- 使用 SFINAE 设计模板方法
- 一个模板方法,用于同时接受常量和非常量参数
- C++模板方法中的循环依赖关系
- 在 C++ 中使用模板方法重写类方法
- 类中的模板方法
- 基于枚举参数调用专用模板方法
- 模板中的模板方法 - 实例声明和类方法声明签名不同
- 可变参数模板方法
- 使用模板方法为标头提供空 cpp 时出现问题
- SFINAE 方法在 clang 中完全禁用基类的模板方法
- 将函数和成员函数传递给模板方法
- 从非模板类调用专用模板方法
- MSVC使用constexpr-if从可变模板方法中的基本模板参数中吞下const
- 依赖于特定类类型的C++模板方法
- 有没有办法仅在两个模板参数相同时才覆盖匹配的模板方法?
- 如何避免模板方法的循环依赖