我想在朋友重载运算符
班级在这里:
#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中复制矢量内容吗?