hallo alle zusammen,
Ich habe folgendes Problem: Wenn ich von einer Klasse mehrere Vererbungen habe und für jede eine überladene Funktion; wie schaffe ich es, dass mein Programm die "richtige" nimmt. Hier mal ein Beispiel:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class A{
protected:
int Zahl;
public:
get_Zahl();
}
class B : public A{ //Vererbungen
int Zahl2;
} // Ich weiss, dass die Klassen wenig sinn machen,
//sie sollen auch nur verdeutlichen auf was ich hinaus will
class C : public A{
char ch;
}
void get_variablen(C* t_C); // gibt alle Membervariablen einer Klasse C aus
void get_variablen(B* t_B); // das gleiche wie oben, nur mit B
|
soweit so gut. Wenn ich jetzt aber ein
Array des typs 'A' mache, damit ich darin sowohl B als auch C speichern kann, gelingt es mir nicht mit dem Aufruf von get_variablen(Array_A[1]) die jeweilige Funktion zu "erwischen"
also so :
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
A A_Array[5]; // Array von A
A_Array[0] = C() //irgendein Konstruktor
A_Array[1] = B() // s.o.
get_variablen(&A_Array[0]) // theoretisch "C"-get_variablen aufrufen
get_variablen(&A_Array[1]) // " " "B"- " "
|
jetzt bekomme ich aber den Fehler, dass es die Funktion get_variablen(&A) nicht gibt. (Die brauch ich ja auch gar nicht).
Dazu ist eventuell noch zu sagen, dass Ich, in dem Fall, das Array von A in einer extra Funktion fülle (bzw. in mehreren). Denn ich glaube, dass das obige Beispiel sogar funktionieren würde :shock:
Ich hoffe ihr versteht was ich meine, falls nicht kann ich es noch mehr konkretisieren.
Danke schonmal im vo
raus