为什么赢了';t cout<&书信电报;与重载*运算符一起工作? 我创建了我的第一堂课,主要是欧弗兰的C++指导,没有恐惧。我让重载的friend ostream操作符

为什么赢了';t cout<&书信电报;与重载*运算符一起工作? 我创建了我的第一堂课,主要是欧弗兰的C++指导,没有恐惧。我让重载的friend ostream操作符,c++,operator-overloading,C++,Operator Overloading,发生的事情是,bcd*2正在生成一个临时的bcd,它无法绑定到bcd&。尝试替换我更喜欢const变量,因为——显然——这是一个很好的观点——最好还是坚持操作符的期望并在操作符josh中修改对象——你是人类中的神!在您编辑const声明之前,我遇到了一些问题,但这解决了它!非常感谢。 BCD bcd(10); //bcd is initialised to 10 BCD bcd2(15); //bcd2 is initialised to 15 cout << bcd; //pr

发生的事情是,
bcd*2
正在生成一个临时的
bcd
,它无法绑定到
bcd&
。尝试替换
我更喜欢const变量,因为——显然——这是一个很好的观点——最好还是坚持操作符的期望并在操作符josh中修改对象——你是人类中的神!在您编辑const声明之前,我遇到了一些问题,但这解决了它!非常感谢。
BCD bcd(10);  //bcd is initialised to 10
BCD bcd2(15); //bcd2 is initialised to 15
cout << bcd;  //prints 10
bcd2 = bcd2 * 2; //multiplies bcd2 by 2
cout << bcd2; //prints 30

cout << bcd * 2 //SHOULD print 20, but compiler says
//main.cpp:49: error: no match for 'operator<<' in 'std::cout << BCD::operator*(int)(2)'
BCD operator*(int z);
friend ostream &operator<<(ostream &os, BCD &bcd);
friend ostream &operator<<(ostream &os, const BCD &bcd);
friend ostream &operator<<(ostream &os, BCD bcd);
friend ostream &operator<<(ostream &os, const BCD bcd);