gpt4 book ai didi

c++ - 虚拟和模板方法 C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:43:12 25 4
gpt4 key购买 nike

我对 2 个方法有相同的实现,它们都将参数插入到文本文件中。

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() 方法应该是虚拟的。
我该如何处理?

最佳答案

您还不能创建虚拟模板化方法。
但是,如果您只是想要模板,那么您不必到处都有代码,您可以从重载方法中调用模板化方法 (Code reuse) :

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);
}

有很多关于这个的讨论......

Can a C++ class member function template be virtual?
C++ Virtual template method
How to achieve "virtual template function" in C++

关于c++ - 虚拟和模板方法 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com