タイトルはすべてです。私はインターネット上の誰もが言ったようにオペレータ< <をオーバーロードしましたが、無効なオペレータについてはまだ愚かなエラーがあります。私は何を間違えたのですか?ここに私のコードは次のとおりです。`operator <<`をオーバーロードしてもクラスで `cout`を使用できません
#include <iostream>
#include <cstdio>
using namespace std;
class Calc {
private:
union _Print_Datatypes {
int I;
double D;
string S;
char C;
};
public:
int i;
void Sum(long double _a, long double _b) {
return _a + _b;
}
void Sub(long double _a, long double _b) {
return _a - _b;
}
void Div(long double _a, long double _b) {
return _a/_b;
}
void Mult(long double _a, long double _b) {
return _a * _b;
}
};
std::ostream &operator<<(std::ostream &os, Calc const &m) {
return os << m.i;
}
int main() {
Calc _calc;
cout << _calc.Sum(2,2);
}
正確なエラーは何ですか? – NathanOliver
sumメンバー関数の戻り値の型は...とは何ですか? ;) –
... \ main.cpp | 42 | error: 'operator <<'に一致しません(オペランドの型は 'std :: ostream {別名std :: basic_ostream}'と 'void')。 –