gpt4 book ai didi

c++ - 如何重载运算符 << 以像 ostream 那样工作

转载 作者:太空狗 更新时间:2023-10-29 21:15:34 24 4
gpt4 key购买 nike

我正在实现一个类,我想使用 << 将一些参数传递给实例。

例如,

terminal term;
term << "Hello World!" << '\n';

代码如下,

class terminal {
template <typename T>
terminal& operator << (T& t) {
std::cout << t;
return *this;
}
};

基本上,我想成为流而不是流的一部分。 (不是 cout << term;)

(抱歉,我忘了说明我的问题)问题是,它适用于字符串,但如果有数字(如 int、char 等),则编译失败。

如果我们使用上面的例子,编译器会报错

Invalid operands to binary expression ('terminal' and '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;
}

}

Live Demo

关于c++ - 如何重载运算符 << 以像 ostream 那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com