PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: Template Typumwandlung


Gast
2008-01-28, 10:04:37
Moin,

ich möchte für ein Template mit Integerspezifizierung eine Typumwandlung bauen, also für template<int N>. Ist es irgendwie möglich ein Template der Form umzuwandeln?
tt<1> tn, tm;
tt<2> tp;
tn = tm; // kein Problem
tn = tp; // Problem;

Kann man das irgendwie allgemein bauen, oder müßte ich das für jeden Typ (hier mit N=2) machen? Also so z.B.:
inline tt<N> operator=( const tt<2> & op){}
Ist es irgendwie möglich (außer es nicht als Template zu lösen)?

danke

Neomi
2008-01-28, 12:00:58
In einem Kurzbeispiel sieht eine generelle Lösung so aus:

template<int N>
class tt
{
private:
int t[N];

public:
template<int N2>
tt& operator=(const tt<N2> &scr)
{
if (N <= N2)
{
for (int i = 0; i < N; ++i)
t[i] = scr.t[i];
}
else
{
for (int i = 0; i < N2; ++i)
t[i] = scr.t[i];
for (int i = N2; i < N; ++i)
t[i] = 0;
}
return(*this);
}

friend class tt;
};

Die friend-Deklaration ist dafür nötig, um von allen Spezifizierungen von tt aus auf private und geschützte Member zugreifen zu können.

Gast
2008-01-28, 13:24:09
Klasse - vielen, vielen Dank!