我有一个名为“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;
}

没有错误期望未使用的参数和表达式。

09-27 13:45