Avatar billede shjtip Nybegynder
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
Avatar billede bjarke Nybegynder
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
Avatar billede soepro Nybegynder
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;
}
Avatar billede bjarke Nybegynder
07. september 1999 - 12:08 #3
Hmmm. Jeg må vist til at tage mig lidt sammen for at følge med dig soepro;-) For fremtiden må jeg hellere sørge for at have en compiler ved hånden når jeg svarer.
Avatar billede soepro Nybegynder
09. september 1999 - 08:18 #4
bjarke >> Jeg synes at det er tæskefint, at vi er to der kan hjælpe folk på vej. Jo flere spørgsmål der "kommer igennem", jo bedre chancer er der for at vi -du og jeg inklusive- kan få løst vore problemer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester