zohn Temat założony przez niniejszego użytkownika |
Przeciążenie operatora >> » 2013-11-05 20:48:10 Witam. Zrobiłem program liczący sumę wektorów w R4 z szablonem. Nie wiem jak przeciążyć operator >> . Wyskakuje mi błąd: undefined reference to operator '>>' ... oto kod: main: #include <iostream> #include "wektor.h"
using namespace std;
int main() { wektor < float, float, float, float > i; zespolone j; wektor < zespolone, float, float, float > z( j, 11 ); wektor < float, float, float, float > k; cin >> i; cout << z; return 0; }
clasa wektor: #ifndef WEKTOR_H #define WEKTOR_H #include <iosfwd> using namespace std; template < class T, class Q, class U, class V >
class wektor { friend istream & operator >>( istream &, wektor < T, Q, U, V >& ); public: wektor(); wektor( const T &, const Q & ); wektor( const T & ); wektor( const T &, const Q &, const U &, const V & ); wektor( const T &, const Q &, const U & ); wektor( const wektor < T, Q, U, V >& ); T x1() const; Q y1() const; U z1() const; V t1() const; protected: private: T x; Q y; U z; V t; }; #include "operatory.cpp" #include "wektor.cpp" #endif
operatory.cpp #include "wektor.h" #include <iostream> #include "zespolone.h"
using namespace std; extern zespolone operator +( const zespolone &, const zespolone & ); extern ostream & operator <<( ostream &, const zespolone & ); extern istream & operator <<( istream &, const zespolone & );
template < class T, class Q, class U, class V > ostream & operator << ( ostream & wy, const wektor < T, Q, U, V >& w ) { wy << "(" << w.x1() << "," << w.y1() << "," << w.z1() << "," << w.t1() << ")" << endl; return wy; }
template < class T, class Q, class U, class V > const wektor < T, Q, U, V > operator +( const wektor < T, Q, U, V >& r, const wektor < T, Q, U, V >& s ) { return wektor < T, Q, U, V >( r.x1() + s.x1(), r.y1() + s.y1(), r.z1() + s.z1(), r.t1() + s.t1() ); }
template < class T, class Q, class U, class V >
istream & operator >>( istream & wp, wektor < T, Q, U, V >& w ) { wp >> w.x; wp >> w.y; wp >> w.z; wp >> w.t; return wp; }
Proszę o jakąś pomoc. |
|
pekfos |
» 2013-11-05 21:11:46 Definicja szablonu musi być w pliku nagłówkowym. |
|
zohn Temat założony przez niniejszego użytkownika |
» 2013-11-05 21:20:49 no to chyba jest? |
|
pekfos |
» 2013-11-05 21:59:58 template < class T1, class Q1, class U1, class V1 > friend istream & operator >>( istream &, wektor < T1, Q1, U1, V1 >& ); |
|
zohn Temat założony przez niniejszego użytkownika |
» 2013-11-05 22:03:57 Pojawia mi się błąd : Wektor is not template. |
|
pekfos |
» 2013-11-05 22:12:03 Gdzie? Poza tym, pliki .cpp to nie są pliki nagłówkowe. |
|
zohn Temat założony przez niniejszego użytkownika |
» 2013-11-05 22:35:04 przy friend istream& operator >>(istream&, wektor<T,Q,U,V>&); więc co pozamieniać ? |
|
Elaine |
» 2013-11-05 23:04:03 |
|
« 1 » |