0

GolfCourse クラス ヘッダー gcourse.hh があり、>>operator の演算子オーバーロードを実装したいと考えています。ファイルgcourse.ccのヘッダーの外でこれを行うにはどうすればよいですか? つまり、クラス自体を指す必要がある「単語」はどれですか。「GolfCourse::」は関数のように十分ではありません...?

gcourse.hh:
class GolfCourse {

public:
---
friend std::istream& operator>> (std::istream& in, GolfCourse& course);

gcourse.cc:
---implement operator>> here ---
4

1 に答える 1

2

GolfCourse::operator >>はのメンバーではないため、不正解ですGolfCourse。無料の機能です。次のように書くだけです。

std::istream& operator>> (std::istream& in, GolfCourse& course)
{
   //...
   return in;
}

クラス定義での宣言は、またはのメンバーfriendにアクセスする場合にのみ必要です。もちろん、クラス定義内で実装を提供できます。privateprotectedGolfCourse

class GolfCourse {
public:
    friend std::istream& operator>> (std::istream& in, GolfCourse& course)
    {
       //...
       return in;
    }
};
于 2012-09-30T17:40:18.717 に答える