Szablon C++

0

Witam,

Mam problem z przeciążonym operatorem << oraz funkcja długość.

 
#include <iostream>
#include <string>
using namespace std;

template <class T1, class T2> class Zespolona
{
private :
    string nazwa;
    T1 a;
    T2 b;
    T2 c;

public :
    Zespolona(string nazwa, T1 a, T2 b, T2 c) : nazwa(nazwa), a(a), b(b), c(c) {}
    friend ostream & operator << (ostream &os, const Zespolona<T1, T2> &sz);
    double dlugosc() const;
};

    double Zespolona<T1, T2>::dlugosc()const
    {
        return a + b + c;
    }

    ostream & operator << (ostream &os, const Zespolona<T1, T2> &sz)
    {
        os << "nazwa  = " << sz.nazwa << endl;
        os << "a = " << sz.a << " b = " << sz.b << " c = " << sz.c << endl;
        return os;
    }

int main()
{
Zespolona<int, double>zes1("macon", 2, 4.1, 3.3);
cout << zes1;
Zespolona<double, int>zes2("Zeus", 2.2, 4, 3.3);
cout << zes2;
}

Dziękuje z góry za pomoc.

1
#include <iostream>
#include <string>
using namespace std;
 
template <class T1, class T2> class Zespolona
{
private :
    string nazwa;
    T1 a;
    T2 b;
    T2 c;
 
public :
    Zespolona(string nazwa, T1 a, T2 b, T2 c) : nazwa(nazwa), a(a), b(b), c(c) {}
    template <class U1, class U2> friend ostream & operator << (ostream &os, const Zespolona<U1,U2> &sz);
    double dlugosc() const;
};
 
template <class T1, class T2> double Zespolona<T1, T2>::dlugosc()const
    {
        return a + b + c;
    }
 
template <class T1, class T2> ostream & operator << (ostream &os, const Zespolona<T1, T2> &sz)
    {
        os << "nazwa  = " << sz.nazwa << endl;
        os << "a = " << sz.a << " b = " << sz.b << " c = " << sz.c << endl;
        return os;
    }
 
int main()
{
Zespolona<int, double>zes1("macon", 2, 4.1, 3.3);
cout << zes1;
Zespolona<double, int>zes2("Zeus", 2.2, 4, 3.3);
cout << zes2;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1