非メンバーを作成しようとしていますoperator<<
。ただし、2 つのクラスからオペレーターにアクセスできるようにしたいと考えています。オペレーターは
void operator<< (ClassA & a, ClassB & b)
2 つのクラスの公開部分では、次のように言います。
friend void operator<< (ClassA & a, ClassB & b);
しかし、オペレーターは のプライベート メンバ変数にはアクセスできますが、 のプライベート メンバ変数にCLass B
はアクセスできないことが判明しましたClass A
。
なんで?
実際のコード: cpp ファイル内:
void operator<< (Hand& h, Deck& d){
h.hand.push_back(d.card[0]);
sort(h.hand.begin(),h.hand.end());
d.card.erase(d.card.begin());
}
ヘッダー ファイル内:
class Deck {
private:
vector<Card> card;
public:
friend void operator<< (Hand& , Deck& );
};
class Hand {
private:
vector<Card> hand;
public:
friend void operator<< (Hand& , Deck& );
};
そして、カードファイルは機能しませんでした。