重载运算符>>

Overloading operator >>

本文关键字:gt 运算符 重载      更新时间:2023-10-16

我有一个模板,我不能从cout重载operator>>

template <class C> class Fract {
/*some fields*/
friend std::ostream& std::operator<<(std::ostream& out, Fract f);
};

当我写它的时候,gcc (CodeBlocks)告诉我,这个函数不是模板(非模板),但是我怎么知道,模板范围从{扩展到}。怎么样?我尝试其他代码:

template <class C> class Fract {
/*some fields*/
std::ostream& std::operator<<(Fract f);
};

这不是工作。我想我必须这样写:

std::ostream<C>& std::operator<<(Fract f);

但是我写不好。你能帮我吗?

UPD:谢谢,在实际程序中不存在这个错误!

您应该像下面这样在Fract类之外定义它

template <class C>
std::ostream& operator <<(std::ostream& out, const Fract<C>& f)
{
    // ....
    return out ;
}

<一口>看到