我有这个成员函数
std::ostream& operator<<(std::ostream &stream) const
Histogram<T>
中的。
然后在另一个班级我
static void write(const RGBHistogram<T> &hist, Output &output)
{
std::cout << hist.redHist << std::endl;
}
redHist,greenHist和blueHist是直方图。
为什么它抱怨没有运算符找到哪个采用直方图类型的右手操作数?
答案 0 :(得分:6)
必须将运算符<<
实现为有意义的自由函数:
//inside class definition
//still free function
friend std::ostream& operator<<(std::ostream &, const Histogram &)
{
}
或者,您可以在课外定义它。 (我更喜欢这样,因为它将类功能组合在一起)
答案 1 :(得分:5)
你应该传递你的班级的参考,它应该是朋友而不是成员函数。
friend std::ostream& operator<<(std::ostream &ostream, const RGBHistogram<T> &stream)
{
// do something.
return ostream;
}