[英]Overloading Iostream C++
我正在编写仅矩阵标头的matrix3x3实现,我想要独立并且不依赖其他标头,但我也写了vector3标头。
当前,我希望它重载ostream <<运算符,但我不想在其中包含iostream 。
如果包括了ostream ,是否可以使重载为可选并且可以工作,并且如果不包括ostream ,则可以使所有其余部分在没有重载的情况下都能正常工作?
我考虑过检查是否包含ostream标头的可能性,但是它有一个主要缺陷,因为如果在Matrix3x3标头之后包含iostream ,它将无法正常工作。
编辑:我已经更换了的iostream与ostream的 ,因为我觉得它创造了关于这个问题的点了一些混乱。
为什么不使用<iosfwd>
?
例:
#include <iosfwd>
class Example
{
public:
Example(int i) : i(i) {}
private:
int i;
friend std::ostream& operator<<(std::ostream& os, Example const& example);
};
#include <iostream>
int main()
{
Example e(123);
std::cout << e << '\n';
}
std::ostream& operator<<(std::ostream& os, Example const& example)
{
os << example.i;
return os;
}
请注意,您不能在自己的代码中安全地转发声明标准类。 相关问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.