Inheritance casts
-
Und wie kann ich das Problem dann lösen?
-
Du könntest die Funktion einfach überladen. Danach hast du wahrscheinlich den gleichen Code doppelt, was auch nicht besonders schön ist.
-
void bubbleSort(Comparable *array[], int size);
ist gegeben?
Aha. Na das ist doof. Versteh ich auch nicht.
So würde reichen:
void bubbleSort(Comparable array[], int size);
Dann hättest du die ganzen Probleme nicht.
-
Dann müssten die Objekte aber sizeof(Comparable) auseinander liegen, weil es eben ein Array wäre. Da Comparable ein Interface ist, ist die doppelte Verzeigerung schon logisch notwendig.
-
Vergiss einfach, was ich gesagt habe.
-
wenn er Comparable** will, dann gib ihm doch einfach das, ungefähr so:
Comparable **pp = person;
funktion (pp, ...);
-
Fehlt da nicht ein &
-
SirLant schrieb:
wenn er Comparable** will, dann gib ihm doch einfach das, ungefähr so:
Comparable **pp = person;
funktion (pp, ...);
Nochmal: Comparable** und Person** sind nicht verwandt, soweit klar? Gut, denn wenn es der Fall wäre, wäre sowas möglich:
struct A { }; struct B1 : A { }; struct B2 : A { }; B1* pb1; B2* pb2; A** pa = &pb1; *pa = pb2; //plötzlich zeigt der pb1-Zeiger auf ein B2 Objekt
und jetzt du mal...
-
Compareable *persons[5] = { new person("1", "19"), new person("2", "23"), new person("3", "22"), new person("4", "18"), new person("5", "20"), }; bubbleSort(persons, 5); for (int i=0; i<5; ++i) delete persons[i];
-
Beim zweiten Anlauf ist dir doch was eingefallen...