05. september 1999 - 22:15
Der er
3 kommentarer og
1 løsning
oprette et array af et objekt
Hej eksperter!
Et for jer måske simpelt spørgsmål, men her er det i hvert fald.
Lad os sig at jeg opretter en klasse der hedder bil, til den laver jeg en constructor funktion til initalisering af objektet.
notation:
bil nybil("Fiat",150000) //whatever,
men hvordan definere jeg et array af objektet nybil??
Håber på et inspirerende svar hilsen Simon
06. september 1999 - 12:31
#1
Inspirerende ved jeg ikke om det er, men hvis det er det du mener, så er det bare:
LØSNING 1:
bil nybilarray[ANTAL];
Og så kan du lade constructoren "default-initialisere" alle objekterne.
LØSNING 2:
Hvis alle objekterne skal være Fiat 150000, så kan du jo bare lave en for-løkke og en medlemsfunktion bil::Init(char*, double). Double eller whatever - det kan jeg ikke lige huske;-)
for(int i=0; i<ANTAL; i++)
nybilarray[i].Init("Fiat",150000);
Var det det???
/Bjarke
07. september 1999 - 11:57
#2
Du kan behandle dine egne klasser helt som alle andre datatyper - også i forhold til initialisering af et array, dvs:
bil nybil[10] = { bil("Fiat", 15000),
bil("Ford", 25000),
bil("Opel", 9000),
bil("Skoda", -4500),
bil("Golf", 215000),
bil("Fiat", 15000),
bil("Mercedes", 1500000),
bil("Chrysler", 350000),
bil("Renault", 125000),
bil("Citroën", 145000)
};
Du er (i alt fald i min Turbo C 3.0) nødt til at caste initializerne til bil(..), for at det fungerer.
Efterfølgende er en komplet listing af mit test-program:
#include <conio.h>
#include <string.h>
class bil
{
public:
bil(char *, long);
char* getbrand(void);
long getvalue(void);
private:
char brand[31];
long value;
};
bil::bil(char *name, long price)
{
strncpy(brand, name, sizeof(brand)-1);
value = price;
}
char* bil::getbrand(void)
{
return brand;
}
long bil::getvalue(void)
{
return value;
}
int main(void)
{
bil testbil("Ford", 75350);
bil tbl[10] = { bil("Ford", 75000),
bil("Opel", 35000),
bil("Skoda", 15000L),
bil("Mercedes", 1750000),
bil("Volvo", 205000),
bil("Saab", 215000),
bil("Seat", 85000),
bil("Chrysler", 245000),
bil("Porche", 500000),
bil("Ferrari", 1500000)
};
for (int i=0; i < 10; i++)
cprintf("bil nr. %d = %s, %lu\r\n", i,
tbl[i].getbrand(), tbl[i].getvalue());
getch();
return 0;
}