[C++] Błąd przy konwersji typów klas i przeciążaniu operatorów
Ostatnio zmodyfikowano 2018-08-07 21:46
Pawcio779 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: #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. #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: 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; }
|
|
pekfos |
» 2018-08-07 21:33:04 complex0 operator +( complex0 & _complex ) const; complex0 operator -( complex0 & _complex ) const; complex0 operator *( complex0 & _complex ) const; | const complex0& _complex. |
|
Pawcio779 Temat założony przez niniejszego użytkownika |
» 2018-08-07 21:46:10 Dzięki wielkie, działa :) |
|
« 1 » |