【发布时间】:2020-03-05 19:36:27
【问题描述】:
我想打印友元重载运算符中的向量值
课程在这里:
#ifndef FOR_FUN_TESTCLASS_HPP
#define FOR_FUN_TESTCLASS_HPP
#include <utility>
#include <vector>
#include <string>
#include <ostream>
class TestClass {
public:
TestClass(uint32_t i, std::string s, std::vector<uint32_t> v) : i_(i), s_(std::move(s)), v_(std::move(v)) {}
friend std::ostream &operator<<(std::ostream &os, const TestClass &aClass) {
os << "i_: " << aClass.i_
<< " s_: " << aClass.s_
<< " v_: " << aClass.v_; //compiler error
return os;
}
private:
uint32_t i_ {0};
std::string s_;
std::vector<uint32_t> v_ {};
};
#endif //FOR_FUN_TESTCLASS_HPP
但是当我调用 main 方法时,它没有编译
TestClass tc { 1, "one", {1,2,3}};
std::cout << tc << std::endl;
这是因为操作符
错误:错误:不匹配运算符
我不想使用 for 运算符进行迭代,我正在寻找一种智能解决方案,即复制 ostream 中的矢量内容?
【问题讨论】:
-
如果您不在
operator <<中,您将如何将向量的每个元素发送到输出流?只需这样做(使用os和aClass.v_对象。) -
标记为重复,加油……
-
@CaptainNemo 我在答案中又添加了一个 sn-p。