Pergunta sobre c++, operator-overloading – simple c ++: Como sobrecarregar o operador de multiplicação para que float * myClass e myClass * float funcionem

8
<code>class MyClass;

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

Como posso sobrecarregar o operador multiply para que tanto a * c1 quanto c1 * a funcionem?

O que os construtores fazemMyClass ter? Pode ser implicitamente convertido de umfloat? David Rodríguez - dribeas
@David Vamos dizer que não pode user52343

Sua resposta

1   a resposta
19

Igual a:

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

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

O segundo também pode ser uma função de membro:

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

As duas primeiras opções funcionam como declarações fora do escopo da classe.

O operador @LuchianGrigore * não aceita mais de um parâmetro, usando c ++ 11. Teve que ir com o segundo. Snowman
Um pequeno adendo: no caso de erros de linker, que ocorrem quando a definição está dentro de um arquivo de cabeçalho, declare ambas as sobrecargasinline magnetometer
OK. Eu nunca havia tentado dessa maneira. Obrigado :) vaisakh
Não é um operador sobrecarregado chamado implicitamente usando o primeiro argumento? Então, se esse primeiro argumento é um tipo de dados básico (flutuar aqui), funcionará? vaisakh

Perguntas relacionadas