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

Przeciążenie operatora >>

Ostatnio zmodyfikowano 2013-11-05 23:04
Autor Wiadomość
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:
C/C++
#include <iostream>
#include "wektor.h"

//#include "zespolone.h"

using namespace std;

int main()
{ wektor < float, float, float, float > i;
    zespolone j;
    //cin>>j;
    wektor < zespolone, float, float, float > z( j, 11 );
    wektor < float, float, float, float > k;
    //    k=z;
    cin >> i;
    cout << z;
    return 0;
}

clasa wektor:

C/C++
#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 // WEKTOR_H

operatory.cpp

C/C++
#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.
P-95397
pekfos
» 2013-11-05 21:11:46
Definicja szablonu musi być w pliku nagłówkowym.
P-95398
zohn
Temat założony przez niniejszego użytkownika
» 2013-11-05 21:20:49
no to chyba jest?
P-95402
pekfos
» 2013-11-05 21:59:58
C/C++
template < class T1, class Q1, class U1, class V1 >
friend istream & operator >>( istream &, wektor < T1, Q1, U1, V1 >& );
P-95411
zohn
Temat założony przez niniejszego użytkownika
» 2013-11-05 22:03:57
Pojawia mi się błąd : Wektor is not template.
P-95414
pekfos
» 2013-11-05 22:12:03
Gdzie?
Poza tym, pliki .cpp to nie są pliki nagłówkowe.
P-95418
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ć ?
P-95421
Elaine
» 2013-11-05 23:04:03
P-95425
« 1 »
  Strona 1 z 1