Overloading Iostream C++

Overloading Iostream C++

本文关键字:C++ Iostream Overloading      更新时间:2023-10-16

我正在写一个标题Matrix3x3实现,我想独立,而不是依靠其他标题,除了我也写过的vector3标头。

目前,我希望它超载Ostream<<操作员,但我不想在其中包括 iostream

包括 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;
}

请注意,您不能在您自己的代码中安全地向前销售标准类。相关问题:

  • 向前声明一个stl容器?
  • std名称空间中变量/类的正向声明