我有一个函数read()
,它使用ifstream
从图像中读取数据。我还为>>
的I / O运算符read()
重载了与operator >>
具有完全相同的定义,除了istream
在void read (string filename);
std::istream & operator >> (std::istream & is, Image & img); //overload >> operator
//same definition for both
上工作。
read()
我有没有办法实现可用于operator>>
和"lock": [
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "EMPTY", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"],
["EMPTY", "EMPTY", "ONE", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR", "FOUR"]
],
"sluiceWidths": [5.458, 4.900, 4.896, 4.898, 4.849, 4.645, 4.958, 4.959, 5.365, 5.810, 5.810, 5.795, 5.796, 5.793, 5.802, 5.775, 5.804],
重载的泛型函数?
答案 0 :(得分:1)
由于std::ifstream
是std::istream
,您的阅读功能可能只需调用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;
}
}