【发布时间】:2018-10-03 20:35:30
【问题描述】:
我正在编写一个函数,如果它通过文件流与如果它通过控制台输出,它应该以不同的方式处理输出。 我可以编写两个函数,一个用于处理 cout,一个用于处理 fstream,并将它们放入 if 语句中以确定调用哪个,或者可以在运行哪个版本上添加一个布尔值,但验证会更简单在我看来,输出传递给函数。我的第一次尝试是
void print(unsigned long long exp, unsigned long long* total,
ostream& out, unsigned long long min, unsigned long long max, unsigned
long long length)
{
if (out == cout)
...
}
有没有办法重载 == 来比较这些或比较这些的函数?
【问题讨论】:
-
听起来你可能想要两个子类,每个子类都有一个特定的虚拟“write()”方法。见SOLID
-
你不需要重载,只需比较指针 -
if ( &out == &cout) -
你必须根据他的流进行不同的打印吗?这似乎违反直觉。如果你真的必须让它与众不同,我会为
ostream&和ofstream&重载函数。 -
“我正在编写一个函数,如果它通过文件流与通过控制台输出,它应该以不同的方式处理输出。”然后写两个函数。如果它应该做不同的事情,它应该是不同的功能
-
建议两个函数的人可能会考虑如何根据流的运行时值分派给这些函数。
标签: c++ overloading cout ostream