如何使用cout<&书信电报;我的班级 Myclass < /Cord>是我编写的C++类,当我写: myclass x; cout << x; myclass x; cout

如何使用cout<&书信电报;我的班级 Myclass < /Cord>是我编写的C++类,当我写: myclass x; cout << x; myclass x; cout,c++,class,input,integer,C++,Class,Input,Integer,非常简单,只需实现: std::ostream & operator<<(std::ostream & os, const myclass & foo) { os << foo.var; return os; } std::ostream&operator通常通过重载operator您需要重载备选方案: struct myclass { int i; inline operator int() const

非常简单,只需实现:

std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
   os << foo.var;
   return os;
}

std::ostream&operator通常通过重载
operator您需要重载
备选方案:

struct myclass { 
    int i;
    inline operator int() const 
    {
        return i; 
    }
};

即使其他答案提供了正确的代码,也建议使用隐藏的friend函数来实现左移位运算符而不是“流运算符”的
运算符。在Iostreams的上下文中,它要么是插入操作符,要么是提取操作符,但它从来不是流操作符。对不起,是的,你是对的。这正是我脑海中所说的,因为我倾向于只在处理流时使用它。在这种情况下,它将是您所说的插入操作符,而不仅仅是流操作符。我已经更新了我的答案来删除那个比特。注意如果<代码> MyCys<代码>有任何<代码>私有< /COD>字段,并且你想<代码>操作程序不应该是代码> const MyCype和M<代码>,而不是<代码> MyCopy& Ms/Mult> /Cord>?@ NubBoo:不,就编译器而言,这两个意思是相同的,但是我仍然会考虑前缀的形式错误。要读取C++声明,您首先从正在声明的内容开始,并以外部方式工作,使用“代码> const <代码> >类型之后,它表示:<代码> m是对const MyCype < /C>的引用。在类型之前,它表示“m是对myclass常量的引用”,它位于无意义和真正不符合语法的边缘。对于像我这样困惑的人,请将运算符重载放在类定义之外(就像示例中一样)@Lorenzo:不,它不能是成员函数。更多细节请参见。你说的“隐藏”是什么意思?我可以看到函数,所以它隐藏得不太好。@NathanOliver我借用了它的名字。这个名字应该用不同的方式调用吗?不,很好。我只是以前从未听过这个词。读了Walter的论文后,它变得更有意义了。
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
      os << obj.somevalue;
      return os;
}
struct myclass { 
    int i;
    inline operator int() const 
    {
        return i; 
    }
};
struct myclass { 
    int i;

    friend auto operator<<(std::ostream& os, myclass const& m) -> std::ostream& { 
        return os << m.i;
    }
};

int main() { 
    auto const x = myclass{10};
    std::cout << x;

    return 0;
}