我正在实现一个类,我想使用<<将一些参数传递给实例。
例如,
terminal term;
term << "Hello World!" << '\n';
代码如下
class terminal {
template <typename T>
terminal& operator << (T& t) {
std::cout << t;
return *this;
}
};
基本上,我想成为一个流,而不是成为流的一部分。(不是cout <<术语;)
(很抱歉,我忘记指定我的问题了)。问题是,它可以很好地与字符串配合使用,但是如果有数字(如int,char等),则编译失败。
如果我们使用上面的示例,编译器将抱怨
无效的二进制二进制运算符(“ terminal”和“ int”)
我将更改为以下内容,以使operator<<
(例如term << "hello" << std::endl;
)的排序工作:
namespace foo {
class terminal {
std::ostream &strm;
public:
terminal(std::ostream &strm_) : strm(strm_) {}
terminal() : strm(std::cout) {}
template <typename T>
friend std::ostream& operator<<(terminal &term, T const &t);
};
template <typename T>
std::ostream& operator<<(terminal &term, T const &t) {
term.strm << t;
return term.strm;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句