我正在尝试创建一个非成员operator<<
。但是,我希望我的两个班级可以访问操作员。运营商是
void operator<< (ClassA & a, ClassB & b)
在两个类的公共部分,我说:
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& );
};
并且卡文件不起作用。