[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Ok....du skal vel egentlig også overstyre assignment operatoren så du kan tildele vektoren værdien 0. Vektor & Vektor::operator=(const int value) { return Vektor(0,0,0); } Noget i den retning vil (sikkert) virke. :-) Robert Larsen wrote: > Din CAverage klasse virer fint som den er. > Du må bare overstyre == operatoren i din vektor klasse. > > bool Vektor::operator==(int num) { > return (this->length() == num); > } > > Mon ikke det ville virke ? > > Venlig hilsen > > Robert > > Carsten Svaneborg wrote: > > > Hej! > > > > Jeg forsøger at lave en template klasse til at tage averages dvs. > > > > template<class T> > > class CAverage > > { > > private: > > unsigned int n; > > T x; > > > > public: > > CAverage(void): n(0) {x=0;}; // PROBLEM!! > > > > void Add(const T& y) > > { > > x+=y; n++; > > if (n == 0xffffffff) {cerr << "Overflow in Average!!\n";} > > }; > > > > T Average() const > > { > > if (n==0) return x; > > else return x/n; > > } > > }; > > > > Jeg ønsker at ovenstående klasse skal kunne tage averages af > > hvad som helst, hvor operatore T operator +=(const T&), > > T operator/=(double), og copy operationen er definerede. > > > > Problemet er nul elementet. Hvordan specificere jeg et nul > > element uden at kende typen på forhånd? > > > > Rent praktisk er T en hjemme implementet dynamisk vector > > klasse af 3 doubles: CDynVector<double,3>. > > > > Kan jeg implementere et nul element, således at ovenstående > > klasse automatisk finder ud af hvad det relevante nul element > > er for class T?? > > > > Jeg spekulerede på noget som T::Zero hvor Zero er et statisk > > element af typen T i alle T klasser. Men jeg vil meget nødigt > > øge hukommelses forbruget, fordi det er kritisk. (P.t. bruger > > jeg 250Mb ram når jeg køre programmet). > > > > Jeg tror p.t. jeg bliver nød til at lave en metode i CDynVector, > > der initalisere et element til 0. > > > > Så "x=0;" bliver x.zero(); > > > > Det syntes dog lidt upraktisk ifht. en notation som x=(T)0; > > eller x=T::Zero; > > > > Nogle forslag?? > > > > -- > > Carsten Svaneborg http://www.mpip-mainz.mpg.de/~svanebor > > <out of signature error, please reboot internet> -- <> "The rumors that Unix is not userfriendly are lie. <> || Unix is userfriendly. || || It is just extremely selective with whom it wants to be a friend." || ||----------------------------------------------------------------------|| || Robert Chris Bang Larsen sslug@sslug || <> <>
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |