两个不同流的泛型函数

Generic function for two different streams

本文关键字:泛型 函数 两个      更新时间:2023-10-16

我有一个函数,read(),它使用ifstream从图像中读取数据。我还重载了与read()具有完全相同定义的图像的I/O运算符>>,除了operator >>适用于istream

void read (string filename);
std::istream & operator >> (std::istream & is, Image & img); //overload >> operator
//same definition for both

有什么方法可以实现可用于read()operator>>重载的通用函数吗?

由于std::ifstream是一个std::istream,你的read函数可能只是调用operator >>,像这样:

std::istream & operator >> (std::istream& is, Image& img);
void read (string filename, Image& img)
{
    std::ifstream is(filename);
    if (is.is_open()) {
        is >> img;
    }
}