为什么我的运算符重载没有编译
Why my operator overloading not compiling?
我有这个成员函数
std::ostream& operator<<(std::ostream &stream) const
在CCD_ 1中。
然后在另一个班我有
static void write(const RGBHistogram<T> &hist, Output &output)
{
std::cout << hist.redHist << std::endl;
}
红色Hist、绿色Hist和蓝色Hist是直方图。
为什么它抱怨找不到接受直方图类型右侧操作数的运算符?
操作员<<
必须作为一个自由函数来实现才能有意义:
//inside class definition
//still free function
friend std::ostream& operator<<(std::ostream &, const Histogram &)
{
}
或者,您可以在类之外定义它。(我更喜欢这样,因为它将类功能分组在一起)
您应该传递类的Reference,它应该是友元函数,而不是成员函数。
friend std::ostream& operator<<(std::ostream &ostream, const RGBHistogram<T> &stream)
{
// do something.
return ostream;
}
相关文章:
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 错误:使用 clang 没有可行的重载,使用 GCC 编译
- 使用 MINGW gcc 编译时,不会为 std::string 调用重载的新运算符
- 编译以下重载<<需要什么enable_if或其他提示?
- C++编译时检查是否可以用某种类型的参数调用重载函数
- ostream 运算符的编译时重载
- 如何在C++编译时检查运算符的特定重载是否存在
- 简单的 SFINAE 示例以重载函数不编译
- 当其中一个函数未编译时,函数重载查找如何工作?
- 重载运算符编译错误?
- C++ - 在 std::thread 中调用重载函数时编译失败
- 如何重载 const 对象的 [],以便值赋值不会导致编译错误
- 使用 C++11 选项编译 C++98 代码时由于 Boost 标头而导致的不明确重载
- 编译错误:2 个重载没有'this'指针的合法转换。使用结构
- 线性重载:为什么 clang 在 GCC 编译时失败?
- C++运算符新重载、编译错误
- 在编译时推导具有未知类型的函数重载
- 使用 std::enable_if 的模板重载的隐式转换运算符 T() 无法编译
- 重载运算符时出现编译错误
- 运算符未编译'+'重载