Jak przeciazyc operator *

0

Mam klasę MACIERZ która ma umozliwic operacje na macierzach

I mam pytanie. Jak zadeklarowac przecieazenie operatora * zeby mozna bylo mnozyc skalar razy MACIERZ (nie odwrotnie: macierz * skalar - bo to mam)

0

Może się nie znam, ale jaka jest różnica pomiędzy ab i ba ?

0

Zadna, ale jak ma zadeklarowane macierz * skalar (X = 5 * C) to ladnie dziala

Jak juz chce zrobic X = 5 * C, gdzie C, X - macierz to nie dziala.

I sie pytam jak zadeklarowac ten operator zeby cos takiego mi tez mnozyl

0

a nie mozna po prostu drugiej metody z odwratna kolejnoscia argumentow?
lub funkcji zaprzyjaznionej?

0

klajter -> pierwsze odpada, operatory będące metodami przyjmują tylko jeden argument ;) A co do drugiego: od siebie dodam (tak na wszelki wypadek ;)) że może to wyglądać tak:

class Foo;
float operator*(float x, Foo& y);

class Foo
{
 public:
    friend float operator*(float x, Foo& y);
    Foo(float x): num(x) {}
    Foo operator*(float x) {return Foo(num*x);}
    float num;
};

float operator*(float x, Foo& y)
{
    return x * y.num;
}

Oczywiście zamiast Foo daj swoja klasę ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1