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)
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)
Może się nie znam, ale jaka jest różnica pomiędzy ab i ba ?
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
a nie mozna po prostu drugiej metody z odwratna kolejnoscia argumentow?
lub funkcji zaprzyjaznionej?
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ę ;)