大家。
我有一个名为" Card"和" CardDeck"其中第二个是向量,其中包含许多第一类卡片。
我的<<重载就像这样:
istream& operator<<(ostream& os, Card& card) {
string str;
if(cardValueCorrect(card._value)){
str += to_string(card._value);
} else {
str += card._identier;
}
str += suitToChar(card._suit);
return os << str;
我认为应该没问题,至少编译器不会抱怨这个。在我的CardDeck中我想要重载&lt;&lt;所以它会打印所有卡片。
CardDeck << overloading seems like that:
ostream& operator<<(ostream& os, CardDeck& odeck){
for(const Card cur_card: odeck._Deck){
os << cur_card << ' ';
}
return os;
}
它抱怨访问私人领域的卡片,并且:
invalid initialization of reference of type 'std::istream& {aka std::basic_istream<char>&}' from expression of type 'std::basic_ostream<char>'
然后是其他非常奇怪的东西(关于第一个运算符重载中的每一行):
within this context
修改
istream to ostream 已修复。
这是一个探测器。现在我看到了162个与#34; info&#34;关于CardDeck运算符重载并告诉我,我进入CardDeck的私有字段(向量在那里)。
Eather:
`invalid initialization of non-const reference of type 'CardDeck&' from an rvalue of type no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'const Card')`
以及很多&#34; info&#34; (日食)这种重复模式:
'const Card' is not derived from 'const std::extreme_value_distribution<_RealType>'
答案 0 :(得分:2)
替换
istream& operator<<(ostream& os, Card& card)
与
ostream& operator<<(ostream& os, Card& card)