我重写<< operator了std::ostream缓解对象显示在我的代码。我使用不同的命名空间来定义要显示的对象类型。
这导致我出现编译错误。我找到了解决办法。似乎必须在全局范围内声明覆盖,但我真的不明白为什么。有人可以解释导致错误的原因吗?
main.cpp:22:38: error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream’ and ‘std::vector’)
std::cout <<"printVector = " << data << std::endl;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
Run Code Online (Sandbox Code Playgroud)
这是一个显示错误的虚拟示例。
#include <iostream>
#include <vector>
inline std::ostream&
operator<<(std::ostream& strm, std::vector<uint8_t>& buffer)
{
return strm << "display std::vector<uint8_t>";
}
namespace aNamespace {
enum TestEnum { a, b, c };
inline std::ostream&
operator<<(std::ostream& strm, TestEnum& value)
{
return strm << "display TestEnum";
}
static void printVector ()
{
std::vector<uint8_t> data {1, …Run Code Online (Sandbox Code Playgroud) c++ ×1