/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
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
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste