[cpp][szablony] no match for ‘operator=’
Ostatnio zmodyfikowano 2021-03-10 21:29
aaaadam Temat założony przez niniejszego użytkownika |
[cpp][szablony] no match for ‘operator=’ » 2021-03-10 19:45:34 Witam, uczę się szablonów, mam problem z poniższym przykładem: #include <iostream> using namespace std; template < typename T > T minimum( const T & lhs, const T & rhs ) { return lhs < rhs ? lhs: rhs; } template < typename T > class myClass { public: myClass( int t ) { x = t; } T x; bool operator <( const myClass & Obj ) const { return this->x < Obj.x; } myClass & operator =( const myClass & k ) { if( this == & k ) return * this; this->x = k->x; return * this; } };
int main() { int a = 4; int b = 3; int i = minimum( a, b ); cout << i << endl; double a2 = 40.5; double b2 = 30.5; double i2 = minimum( a2, b2 ); cout << i2 << endl; myClass < int > a3( 66 ); myClass < int > b3( 99 ); myClass < int > i3 = minimum( a3, b3 ); cout << i3.x << endl; myClass < double > a4( 0.5 ); myClass < double > b4( 0.1 ); myClass < double > i4( 0 ); i4 = minimum( a3, b3 ); cout << i4.x << endl; }
proszę o pomoc, nie wiem jak się uprorać z tym operatorem |
|
pekfos |
» 2021-03-10 19:51:27 Przypisanie masz zdefiniowane tylko między obiektami myClass z tym samym T. Operator powinien być szablonem żeby pozwolić na mieszanie typów. |
|
aaaadam Temat założony przez niniejszego użytkownika |
» 2021-03-10 19:59:09 dzięki za pomoc, a mógłbyś poratować kodem, bo nie wiem jak mam to zrobić... coś w stylu ? template < typename T > class myClass { public: myClass( int t ) { x = t; } T x; bool operator <( const myClass & Obj ) const { return this->x < Obj.x; } template < typename T2 > myClass & operator =( const myClass & k ) { if( this == & k ) return * this; this->x = k->x; return * this; } };
|
|
pekfos |
» 2021-03-10 21:29:52 Jeszcze użyj tego T2, w przeciwnym razie robisz ten szablon po nic. |
|
« 1 » |