【发布时间】:2020-08-07 16:38:26
【问题描述】:
我有许多 operator<<() 函数,它们从做类似的事情开始,所以我想抽象一下。这是我正在尝试做的最小可重复案例(消除了所有复杂性)。请注意,它不会编译。如果它确实编译了,我希望程序自己在一行上打印数字 3。
/*
clang++ -std=c++14 -Wall -Wextra foo.cc -o foo
*/
#include <ostream>
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
ostream& BaseFunction(ostream& os, const int x) {
return os << x;
}
int main(int argc, char *argv[]) {
cout << BaseFunction(cout, 3) << endl;
}
错误是这样开始的:
foo.cc:17:8: error: invalid operands to binary expression ('ostream' (aka 'basic_ostream<char>') and
'ostream')
cout << BaseFunction(cout, 3) << endl;
~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
然后提供一大堆“从 ostream 到 T 的未知转换”建议。
有人知道我做错了什么吗?
【问题讨论】:
-
取出
BaseFunction(cout, 3) << endl;中的cout,它应该可以工作。 -
我不确定你的目标是什么,但也许你想要this pattern?
-
聪明的解决方法@MooingDuck,谢谢!