[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]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] arv og arrays



Gnalle wrote
> > class a {
> >   double x;
> > };
> > class b:public a{
> > };
> > int main(int argc, char *argv[])
> > { a *myarray;
> >   myarray = new b[2];
> > }
> > Er det altid tilladt at gøre sådan.

needless Game resigns wrote:
> Hej gnalle
> Dit eksempel er fulkommen legalt --- men jeg ville være *meget* forsigtig
> med at anvende det "ro i sjælen"!
> Du rører nemlig noget jeg har lært at kalde for: "minimal kanonisk form"

[SNIP]

> Et andet problem med dit eksempel er at class a ikke har en virtuel
> destructor - der er reserveret plads til b[2] men en
>     delete[] myarray;
> vil ikke nødvendigvis fjerne b[2] idet myarray jo kun fylder a[2]  // dog
> == b[2] i eksempel
> 
> Med mindre du til fingerspidsidserne har tjek på hvad der sker når du
> allokerer og deallokerer vil jeg anbefale dig at bruge
> class vector<.> der er en optimeret C++ klasse istedet for "C" arrays:


Nu når jeg er igang med at spørge om  råd, kan jeg jo lige så godt
forklare hvad det er, jeg gerne vil kunne. Jeg skriver et speciale, hvor
jeg simulerer 500 hoppebolde i en kasse med periodiske randbetingelser.
Det betyder at der ikke er nogen vægge, men hvis en bold bevæger sig ud
af kassen til høre kommer den ind igen til venstre. 

Jeg har brug for to forskelligge klasser. 
En vektor er et array med tre koordinater.
En periodisk_vektor har også tre koordinater med værdier i intervallet
[0..L];
Et vektorskelet


/* Et vektor uden periodiske randbetingelser */
class vektor{
        public:
        double *x;
	vektor(){x = new double[3];};
	~vektor(){delete[] x;};
	plus(vektor);
	//...
};

/* En vektor med periodiske randbetingeler*/
class periodisk_vektor:public vektor{
        public:
	periodisk_vektor(){x = new double[3];};
	~periodisk_vektor(){delete[] x;};
	plus(vektor);
	//...
};


//Jeg har også brug for nogle klasse er, der kan beskrive positionen af
alle 500 partikler

/* Enkonfiguration uden periodiske randbetingelser */
class konfiguration{
        public:
        vektor *x;
	konfiguration(){x = new vektor[3];};
	~konfiguration(){delete[] x;};
	plus(konfiguration);
	//...
};

/* En konfiguration med periodiske randbetingelser*/
class periodisk_konfiguration:public konfiguration{
        public:
	periodisk_konfiguration(){x = new periodisk_vektor[3];};
	~periodisk_konfiguration(){delete[] x;};
	plus(konfiguration);
	//...
};

Senere vil jeg gerne kunne fortsætte med at lave en tidsserie af
forskellige konfigurationer osv.
Jeg har sådan set lavet noget, der virker OK, men i mit foreløbige
program indeholder 
periodisk_konfiguration indeholder ikke elementer af typen
periodisk_vektor, og derfor får jeg et problem. Nu har jeg to spørgsmål

1 Kan jeg gøre det ovenstående uden problemer
2 Bør jeg stadig bruge vector<.>

-- 
 Niels L Ellegaard

'http://dirac.ruc.dk/~gnalle/'


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:07 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *