gpt4 book ai didi

c++ - 不能使用 operator<< 作为方法?

转载 作者:太空宇宙 更新时间:2023-11-04 16:01:49 24 4
gpt4 key购买 nike

<分区>

我曾经将 operator<< 定义为函数,就像我对大多数运算符所做的那样。

class MyClass {
int myAttribute;

public :

MyClass(int attr):
myAttribute(attr){}

int getter() {return myAttribute;}
};

MyClass operator+(MyClass mc1, MyClass mc2)
{
MyClass mc(mc1.getter()+mc2.getter());
return mc;
}

std::ostream& operator<< (std::ostream &stream, MyClass mc)
{
stream << mc.getter();
return stream;
}

所有这一切都很好,但我被告知我可以将其定义为一种方法。我删除了 operator+ 和 operator<< 的定义,并且 operator+ 没有问题

MyClass MyClass::operator+(MyClass mc1)
{
MyClass mc(mc1.getter()+myAttribute);
return mc;
}

但它不适用于运算符<<

std::ostream& MyClass::operator<< (std::ostream &stream)
{
stream << myAttribute;
return stream;
}

我得到错误:

error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'MyClass')

我错过了什么?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com