Java で toString() をエミュレートするクラスの << 演算子をオーバーロードしようとしています。クラスがあり、出力したいNumExpr
プライベート変数があります。number
ここにそれらがあります:
NumExpr::NumExpr( string n ) {
number = atoi( n.c_str() );
}
string NumExpr::name() {
return "num";
}
ostream & operator<<(ostream &s, const NumExpr &num) {
s << num.number;
return s;
}
プライベート変数にアクセスできるようにフレンド関数にしました
class NumExpr : public Expr {
public:
NumExpr( string v );
string name();
private:
int number;
friend ostream& operator<<(ostream &s, const NumExpr &num);
};
しかし、私はこのエラーが発生しています
./ast/Expr.cpp: 関数 ?std::ostream& operator<<(std::ostream&, const NumExpr&)?: ./ast/Expr.cpp:50: エラー: ?operator<NumExpr:: に一致しません番号?./ast/Expr.cpp:49: 注: 候補は次のとおりです: std::ostream& operator<<(std::ostream&, const NumExpr&)
私はこのエラーを検索しました。人々は同じ問題を抱えているようですが、私のものは人々が提供している解決策のように見えます。私がやっている根本的に間違っていることはありますか、それとも私が気付いていない構文のシェナニガンがありますか?
助けてくれてありがとう!