16. april 2004 - 14:26Der er
19 kommentarer og 1 løsning
indsæt objekt i array
Et rigtigt begynder-spørgsmål, der reelt kun går på hvordan man indsætter et objekt i et array.
Jeg har et par klasser - Rektangel og Cirkel, der begge bedarver fra en abstrakt Figur klasse. Derudover har jeg lavet en Tabel-klasse, der reelt kun udgør et enkelt array af typen Firgur, tab[8][8]. Nu vil jeg så gerne (fra min main) kunne kalde Tabel-klassens insert-metode, og indsætte henholdsvis Cirkel- og Rektangel-objekter i min tabel.
min tabel er erklæret med (tabel.h): Figur tab[8][8];
Jeg havde tænkt lidt på at lave en min insert alá (tabel.cpp): void Tabel::insert(int x, int y, Figur &f) { this->tab[x][y] = &f; }
og så kalde den med f.eks.: Figur *f = new Cirkel(); int i = 0, j = 0; insert(i,j, f) ;
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hmm.... vent nu lige lidt. Grunden til at den går kold, skyldes nok at jeg kalder insert() fra en anden metode i Tabel-klassen, hvor jeg parameter-overfører et array.
Jeg har nemlig lavet fill() metode, der automatisk skal indsætte henholdsvis Cirkel- og Rektangel-objekter i tabellen.
void Tabel::fillTabel(Figur *figurArray[2]) { int x;
// srand(seed): Sets a random starting point. srand( (unsigned)time(NULL) );
Lige et sidste (par) spørgsmål: Hvordan får jeg typecastet mine "Figur" pointere, når jeg løber min tabel igennem, så jeg kan få kaldt Cirkel-klassens 'getAreal()' metode på Cirkel-objekterne og Rektangel-klassens getAreal() på mine Rektangel-objekter...
int main() { int i = 123; string s = "abc"; MyClass *mc = new MyClass(); MySubClass *msc = new MySubClass(); MyClass *mcmsc = new MySubClass(); cout << typeid(i).name() << endl; cout << typeid(s).name() << endl; cout << typeid(mc).name() << endl; cout << typeid(msc).name() << endl; cout << typeid(mcmsc).name() << endl; cout << typeid(*mc).name() << endl; cout << typeid(*msc).name() << endl; cout << typeid(*mcmsc).name() << endl; return 0; }
GCC 3.1/mingw output:
i Ss P7MyClass P10MySubClass P7MyClass 7MyClass 10MySubClass 7MyClass
MS VC++ 6:
int class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>> class MyClass * class MySubClass * class MyClass * class MyClass class MySubClass class MyClass
Jeg havde også forventet at den ville være klog nok til at fortælle at mcmsc i virkeligheden peger på en MySubClass, det andet er med til at gøre det endnu mere ubrugeligt i praksis.
Synes godt om
Ny brugerNybegynder
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.