此问题已经在这里有了答案:
我想在朋友重载运算符<班级在这里:
#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中复制矢量内容?
我想在朋友重载运算符<< [##&&...
friend std::ostream &operator<<(std::ostream &os, const TestClass &aClass) {
os << "i_: " << aClass.i_
<< " s_: " << aClass.s_
<< " v_: ";
for(auto it : aClass.v_)
os << it<<' ';
return os;
}