私は、主に Overland の C++ Without Fear に基づいて、最初のクラスを作成しています。オーバーロードされた友人の ostream operator<< を作成しました。これは正常に動作します。* 演算子もオーバーロードしましたが、うまくいきました。うまくいかないのは、 * 演算子の結果を直接出力しようとしたときです。
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);
私が知る限り、operator* は BCD を返すので、operator<< はそれを出力できるはずです。助けてください!