Nu vil jeg initiere heapPtr, men hvordan gør jeg det ? Jeg har bl.a. prøvet: template<int dim,typename T> Vector<dim,T>::heapBlok * Vector<dim,T>::heapPtr = 0; Men det virker ikke. Hvordan skal den så se ud ?
template<int dim,typename T> class Vector { friend ostream &operator<<(ostream &ud, Vector<dim,T> &v) { for ( int i = 0 ; i < dim ; i++ ) ud << v.value[i];
og i cpp filen: template<int dim,typename T> friend ostream &operator<<(ostream &ud, Vector<dim,T> &v) { for ( int i = 0 ; i < dim ; i++ ) ud << v.value[i];
return ud; }
... ikke kan compile ?
Fejlen jeg får fra MS VC er: error C2255: 'operator`<<'' : a friend function can only be declared in a class
Jeg har i øvrigt løst første problem ved at erklære struct heapBlok uden for klassen. Så virker template<int dim,typename T> heapBlok * Vector<dim,T>::heapPtr = 0; ... men jeg ville stadig foretrække, hvis jeg kunne gøre som først tænkt. Så hvis der er nogen der har en løsning på det problem, må de endelig sige til.
hvis denne skrives i headeren og du du bruger Vector i 2 forskellige object filer burde du få en fejl da den så er defineret 2 gange, hvis den kun skives i en object fil får du måske ikke alle kombinationer af dim med.
Du vil kunne have en variable dim som du fx. indlæser dynamisk
cin >> dim
x = new Vector<dim, int>;
hvordan skal runtime delen kunne oprette en ny statisk variable heapPtr der passer til Vector<dim, int> ?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.