次の (部分的な) コードを検討してください。
class Group {
private:
int id;
public:
void set_id(int);
int get_id();
bool operator==(const Group&);
};
bool Group::operator==(const Group& g) {
if(g.id == this->id) { /* id is private? */
return true;
}
return false;
}
コードがコンパイルされ、結果は適切に見えます。しかし、if
演算子のオーバーロード実装の部分で、その引数のプライベートメンバー - に直接アクセスしていますが、そのconst Group& g
ようなアクセスは無効ではないでしょうか?