cp-nilsen Skrevet 9. mai 2006 Skrevet 9. mai 2006 Si jeg har en klasse "klasse1" og en "klasse2". Si nå jeg definerer "klasse1 *test" i klasse2. class klasse1 { //blablabla } class klasse2 { private: klasse1 *test; } I constructoren til klasse2 kan jeg da skrive før sscopet begynner klasse2::klasse2(blablabla) : test ( new klasse1(argumenter) ) { } Men si at jeg skal ha en array av klasse1 i klasse2. Jeg definerer f.eks. "klasse1 *test[5]" i klasse2. class klasse2 { private: klasse1 *test[5]; } Hvordan skal jeg da kalle constructoren til denne? Har prøvd ting som : test ( new klasse1(argumenter) ) : test ( new *klasse1(argumenter) ) : test ( new klasse1[](argumenter) ) og liknende, men får det ikke til å funke... Sorry at jeg ikke kommer med mer konkret kode en dette, men har prosjektet på en PC uten internett.
dayslepr Skrevet 9. mai 2006 Skrevet 9. mai 2006 (endret) en initializer kan ikke brukes i sammenheng med `new' når det er snakk om arrayer, man må gjøre det "manuellt" i stedet: Skjult tekst: (Marker innholdet i feltet for å se teksten): #include <iostream> using namespace std; class Class1 { public: Class1() { cout << "before" << endl; } // constructor Class1(char* argument) { cout << "do stuff" << endl; } // constructor }; // Class1 class Class2 { public: Class2() { for(unsigned int i = 0; i < n_elts; i++) test[i] = new Class1("blah"); } // constructor private: static const unsigned int n_elts = 5; Class1* test[n_elts]; }; // Class2 int main() { Class2 obj2; return 0; } Endret 9. mai 2006 av dayslepr
dayslepr Skrevet 9. mai 2006 Skrevet 9. mai 2006 (endret) btw. .. det du kan gjøre er å wrappe Class1 i en wrapper-klasse med en default konstruktør som kaller Class1's ikke-defaulte-konstruktør Endret 9. mai 2006 av dayslepr
cp-nilsen Skrevet 9. mai 2006 Forfatter Skrevet 9. mai 2006 en initializer kan ikke brukes i sammenheng med `new' når det er snakk om arrayer, man må gjøre det "manuellt" i stedet:------- 6068483[/snapback] Såklart, jeg burde ha tenkt på dette Funka fjell btw
Dead_Rabbit Skrevet 9. mai 2006 Skrevet 9. mai 2006 Om du har en std::vector, fremfor built-in array, bør ikke det være noe problem å gjøre det "automatisk".
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå