Code reuse i templates uden arv?

Tags:    c++

Hej,

Jeg vil gerne genbruge noget kode i en template og dens specialisering - uden at arve den; se fx:

Fold kodeboks ind/udKode 



-Hvor altså den defaulte vektor-template repræsenterer vilkårlige N-dimensionelle vektorer, og den anden specialiserer for 2-dimensionelle (fx kan man kun finde tværvektoren når den er 2D).

Men der findes jo også operationer som er fælles, fx længden (aka. 2-normen) af en vektor.
--
Jeg ved godt at man vil kunne lægge norm() ind i base, men jeg synes bare ikke den hører til dér.





3 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg vil personlig smide den i en eller anden form for base klasse.
Men måske du kan lave en friend funktion/klasse af en art?



Hvis en funktion er fælles for alle (/de fleste) afledte klasser, bør man lægge den i base klassen. Evt. lave den virtual, så de få afledte klasser der ikke kan bruge den fælles implementation kan lave deres egen.

Hvis ikke funktionen er fælles, for alle (/de fleste) men alle afledte, men alle implementerer den, laver man den pure virtual i base classen.

Ellers erklærer og implementerer man den i de afledte klasser, der har den.

Jeg ville gerne vide hvorfor du skriver: "men jeg synes bare ikke den hører til dér".



Jeg hælder også meget til at smide den i base klassen.



t