Вопрос по c++ – простой c ++: как перегрузить оператор умножения, чтобы float * myClass и myClass * float работали

8
<code>class MyClass;

int main()
{
  float a = 5;
  MyClass c1;
  MyClass c2 = a*c1;
  MyClass c3 = c1*a;
}
</code>

Как я могу перегрузить оператор умножения, чтобы и a * c1, и c1 * a работали?

@ Давид Допустим, он не может user52343
Что делают конструкторыMyClass иметь? Может ли оно быть неявно преобразовано изfloat? David Rodríguez - dribeas

Ваш Ответ

1   ответ
19

MyClass operator* (float x, const MyClass& y)
{
    //...
}

MyClass operator* (const MyClass& y, float x)
{
    //...
}

Второй также может быть функцией-членом:

class MyClass
{
    //...
    MyClass operator* (float x);
};

Первые 2 опции работают как объявления вне области видимости класса.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededMyClassError: User Rate Limit Exceededoperator +(int, const MyClass&)Error: User Rate Limit Exceededoperator +(int,int).
Error: User Rate Limit ExceededthisError: User Rate Limit Exceeded

Похожие вопросы