/
Forside
/
Teknologi
/
Udvikling
/
C/C++
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
C/C++
#
Navn
Point
1
BertelBra..
2425
2
pmbruun
695
3
Master_of..
501
4
jdjespers..
500
5
kyllekylle
500
6
Bech_bb
500
7
scootergr..
300
8
gibson
300
9
molokyle
287
10
strarup
270
Elegant implementering af forudberegning
Fra :
Thomas Krog
Dato :
04-04-01 14:51
Eksempel:
#define M_PI 3.14159265359
class Circle{
double r; // radius
public:
Circle(double Ir){r = Ir;}
inline double virtual frSqr(){return r*r;}
double areal(){
return M_PI*frSqr();
}
};
class CirclePreCalc : public Circle{
double rSqr; // radius*radius
public:
CirclePreCalc(double Ir) : Circle(Ir){rSqr=Ir*Ir;}
inline double frSqr(){return rSqr;}
};
Fordelen ved ovenstående er at areal funktionen kun findes i et eksemplar
som ikke behøver at bekymre sig om hvorvidt r^2 er forudberegnet. Problemet
er bare at frSqr() sikkert ikke bliver inlinet i areal(). (jeg vil gerne
have at compileren opretter en udgave af areal() til hver klasse hvor
frSqr() så er inlinet).
Det kunne løses således:
template<class T>
double areal(T c){return M_PI*c.frSqr();}
Problemet er så at areal() ikke bliver en member funktion.
Findes der en god løsning hvor areal() bliver en member function?
Søg
Alle emner
Teknologi
Udvikling
C/C++
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177558
Tips :
31968
Nyheder :
719565
Indlæg :
6408926
Brugere :
218888
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.