бинарный "operator/" имеет слишком много параметров

Выдаёт ошибку (бинарный "operator/" имеет слишком много параметров)

class Lamp
{
private:
    float Pn, Un, U;
public:
...
    float RawP() { return (U * Pn / Un); }
    float operator/(Lamp a, Lamp b);
};

float operator/(Lamp a, Lamp b)  
{   
    float tmp;   
    tmp = a.RawP() / b.RawP();
    return tmp;   
} 

int main()
{
float s;
...
s = Arr[j] / Arr[k];
}

Ответы (1 шт):

Автор решения: Qwertiy

Бинарный оператор, являющийся нестатическим членом класса должен принимать только один аргумент - второй. Первым будет this.

Можно вообще выкинуть оператор из класса, тогда он потеряет доступ к приватным членам, но в твоём случае они и не используются.

Ну и чтобы выкинуть оператор из класса, но одновременно предоставить ему доступ к приватным членам, надо объявить его дружественным классу (friend).

→ Ссылка