У меня есть class Item
и Item items
и int q
. Я пытаюсь сделать функцию для перегрузки + =. Мне нужна функция друга или она должна быть участницей?Перегрузка оператора C++ + =
Заявление в основной программе является
items+=q;
в классе Item заголовочном файле:
friend Item operator+=(const Item&, int&);
в классе Item CPP файле:
Item operator+=(const Item& items, int& q)
{
items+=q;
return items;
}
И поэтому компилятор говорит не ровня "+ ="
см [здесь] (HTTP: // StackOverflow. com/questions/4421706/operator-overloading) – GreatAndPowerfulOz
Ваш 'fiend Item operator + = (const Item &, int &)' не может работать: 'item' - это то, что будет добавлено к' q', но ваша функция принимает 'const ', что означает, что он не может быть изменен. 'operator + = (item &, const int &)' будет работать. – kfsone
Кроме того, функция бесконечно рекурсивна. '+ = (Item, int)' безоговорочно вызывает '+ = (Item, int)' –