Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ operator mnożenia dla macierzy

Ostatnio zmodyfikowano 2016-04-22 11:51
Autor Wiadomość
Gibas11
» 2016-04-21 17:14:40
Jakoś tak:
* this = * this * innaMacierz;
Albo trochę czytelniej:
* this =( * this ) * innaMacierz;
P-147501
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*
C/C++
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.
P-147515
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:
C/C++
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:
C/C++
Macierz operator *=( const Macierz & m )
{
    * this =( * this ) * m;
}
P-147520
jolkaaa3
Temat założony przez niniejszego użytkownika
» 2016-04-22 11:51:58
Dziękuję bardzo za pomoc.
P-147540
1 « 2 »
Poprzednia strona Strona 2 z 2