我有一个名为“Card”的类和一个名为“CardDeck”的类,并在“CardDeck.h”中定义了以下提升:
CardDeck(Card card){cards.push_back(card);}
CardDeck有一位 friend 运算符(operator)+:
friend CardDeck operator+(const CardDeck, const CardDeck);
它适用于:
CardDeck+CardDeck
CardDeck+Card
Card+CardDeck
但不适用于Card + Card。我得到:
"no match for 'operator+' (operand types are 'Card' and 'Card')"
在这种情况下,为什么不将Cards提升为CardDecks?
我也尝试使用以下方法覆盖operator +:
friend CardDeck operator+(const Card, const Card);
但这也不起作用。
有什么提示吗?
谢谢!
最佳答案
虽然对我有用!
class A
{
public:
A() {}
};
class B
{
public:
B(A sth) {}
};
B operator+(const B x, const B y)
{
return B(A());
}
using namespace std;
int main()
{
A x;
B y(x);
y + y;
x + y;
y + x;
x + x;
return 0;
}
没有错误期望未使用的参数和表达式。