C++ operator mnożenia dla macierzy
Ostatnio zmodyfikowano 2016-04-22 11:51
Gibas11 |
» 2016-04-21 17:14:40 Jakoś tak: * this = * this * innaMacierz; Albo trochę czytelniej: * this =( * this ) * innaMacierz; |
|
michal11 |
» 2016-04-21 21:38:02 Moim zdaniem powinnaś zrobić inaczej, napisać najpierw operator*= (co nie będzie takie trudne pewnie, wystarczy jakoś przerobić to co już masz). I na podstawie niego napisać operator* T operator *( const T & lhs, const T & rhs ) { return( T( lhs ) *= rhs ); }
@up A czy przypadkiem this nie jest stałym wskaźnikiem i nie można do niego nic przypisywać ? Zresztą jak sobie wyobrażasz działanie czegoś takiego ?Rzeczywiście, nie miało sensu to co napisałem. |
|
Gibas11 |
» 2016-04-21 21:46:48 Użyłem gwiazdek ( * ) więc operuję na obiekcie, nie wskaźniku. Działa to przecież mniej więcej tak: this->operator =(( * this ) * innaMacierz );
Czyli operator * liczy mi iloczyn obecnej macierzy i tej, przez którą mnożę, a potem zdefiniowanym wcześniej operatorem przypisania zapisuję to do macierzy po lewej stronie wyrażenia. Nie testowałem tego, ale dlaczego miałoby nie działać? EDIT: A kolejność tworzenia operatorów pewnie narzuca zadanie, kto sam dla siebie pisze takie rzeczy? ;-) EDIT2: Kawałek kodu rzeczywiście wyrwany z kontekstu, więc z całą funkcją powinno wyglądać lepiej: Macierz operator *=( const Macierz & m ) { * this =( * this ) * m; }
|
|
jolkaaa3 Temat założony przez niniejszego użytkownika |
» 2016-04-22 11:51:58 Dziękuję bardzo za pomoc. |
|
1 « 2 » |