[C++] Błąd przy konwersji typów klas i przeciążaniu operatorów
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

[C++] Błąd przy konwersji typów klas i przeciążaniu operatorów

AutorWiadomość
Temat założony przez niniejszego użytkownika
[C++] Błąd przy konwersji typów klas i przeciążaniu operatorów
» 2018-08-07 21:19:48
Witam, mam problem z przeciążaniem operatora mnożenia dla klasy. Operator mnożenia jest przeciążony w taki sposób, aby umożliwił mnożenie 2 obiektów tej samej klasy. Mam taki kod:

C/C++
#include "stdafx.h"
#include <iostream>
#include "complex0.h"

using namespace std;

int main()
{
    complex0 num1( 2.1, 4 );
    complex0 num2( 7, 3.3 );
    complex0 num3;
   
    cout << "2 * num1 = " <<( complex0 ) 2.0 * num1 << endl;
    cout << "num1 * 2 = " << num1 *( complex0 ) 2.0 << endl;
   
    return 0;
}

Kiedy to kompiluję to wyskakuje mi błąd przy mnożeniu "num1 * (complex0) 2.0", ale mnożenie "(complex0) 2.0 * num1" jest poprawne i wykonuje się, ale przecież w obu przypadkach jest to mnożenie tych samych typów przez siebie "complex0 * complex0". O co tu chodzi? Rzutowanie typu double na complex0 jest możliwe, bo mam odpowiedni konstruktor klasy. Dodam, że program napisany jest w Microsoft Visual Studio.

C/C++
//plik complex0.h
#include <iostream>

class complex0
{
private:
    double Real;
    double Imagine;
   
public:
    complex0();
    complex0( double _real );
    complex0( double _real, double _imagine );
    complex0 operator +( complex0 & _complex ) const;
    complex0 operator -( complex0 & _complex ) const;
    complex0 operator *( complex0 & _complex ) const;
    friend std::ostream & operator <<( std::ostream & _ostream, const complex0 & _complex );
    ~complex0();
};

definicja complex0 operator*(complex0 & _complex) const:

C/C++
complex0 complex0::operator *( complex0 & _complex ) const
{
    complex0 number;
    number.Real =( Real * _complex.Real ) -( Imagine * _complex.Imagine );
    number.Imagine =( Real * _complex.Imagine ) +( Imagine * _complex.Real );
    return number;
}


P-172028
» 2018-08-07 21:33:04
C/C++
complex0 operator +( complex0 & _complex ) const;
complex0 operator -( complex0 & _complex ) const;
complex0 operator *( complex0 & _complex ) const;
const complex0& _complex.
P-172029
Temat założony przez niniejszego użytkownika
» 2018-08-07 21:46:10
Dzięki wielkie, działa :)
P-172030
« 1 »
 Strona 1 z 1