类和字符串之间的重载操作

时间:2013-12-14 19:54:21

标签: c++ operator-overloading

我想对类中的运算符<<使用重载操作。我知道如何在两个类之间执行此操作:

class output
{
    public:
    string x;
    output (string a) : x(a) {}
    output () {}

    output operator<< (const output&);
};
output output::operator<< (const output& a)
{
   /* return something that has to do with a.x and x, to make an operation */
}

当使用x = y << z时,如果所有属于同一类,并且operation-overload函数返回合适的值,则此方法有效。但是,问题是,我希望操作的一部分是一个字符串(所以基本上,xy将具有类型outputz输入string)。我希望这会奏效:

output output::operator<< (const string& a)  

......但事实并非如此。所以我开始怀疑我要么误解整个事情的使用,要么我只是想做一些根本没有意义的事情......我试过了一下,但是找不到任何东西。但如果是这样,我究竟误解了什么?有没有其他方法可以达到我想要的目的?
非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

您可以将运算符重载声明为非成员函数。这将允许您指定左侧和右侧操作数类型。

output & operator << (output &lhs, const string &rhs)
{
    // do something with lhs and rhs
    return lhs;
}

对于这种运算符,我怀疑你也希望通过引用返回output对象(尽管这完全取决于你正在做什么)。