0

2つの異なる演算子のオーバーロードがあります。何らかの理由でエラーが発生しています。そのうちの1つを削除しても、エラーは表示されません。理由を教えてもらえますか?

両方を組み合わせることができますか?

これは、画面への印刷に使用されます。

ostream& operator<<(ostream &out, const Point &p) {
return out << "[" << setw(4) << p.getX() << setw(1) << "," << setw(4) << p.getY() << "]   " << setprecision(3) << p.getScalarValue() << endl;
}

これは、テキストファイルへの印刷に使用されます。

ofstream& operator<<(ofstream &out, const Point2D &p){
return out << "[" << setw(4) << p.getX() << setw(1) << "," << setw(4) << p.getY() << "]   " << setprecision(3) << p.getScalarValue() << endl;
}

エラー:

Point.cpp:91:147:エラー:タイプ'std :: basic_ostream :: __ ostream_type {aka std ::basic_ostream}'<の式からのタイプ'std:: ofstream&{aka std :: basic_ofstream&}'の参照の初期化が無効です。 / p>

4

1 に答える 1

3

2番目のバージョンは必要ありません。最初のものを使用できます:

Point p;
std::ofstream pointsFile("points.txt");
pointsFile << p << "\n";

まず、std::ostream& operator<<ファイルへの書き込みと標準出力または標準への書き込みのための作業

Poind2D次に、から継承すると仮定すると、参照を取得する関数または演算子にaPointを渡すことも機能します。Point2DPoint

于 2012-11-14T15:26:31.200 に答える