[c++] Problem bei Funktionsaufruf aus Klasse

guddy

Mitglied
Hallo Leute,
ich hab mal wieder ein Problem... :-)

Ich habe aus einer Bibliothek 2 Klassen die sich jeweils aus 2 Basisklassen ableiten. Hier die Hierachie:

1. GABin2DecGenome : public GA1DBinaryStringGenome : public GABinaryStringGenome, public GAGenome
2. GARealGenome : GAReal : public GA1DArryAllelGenome : public GA1dArryGenome : public GAArray<T>, public GAGenome

Ich habe nun über eine Abfrage ein Objekt "genome" wie folgt erzeugt:

C++:
GAGenome *genome = NULL;
switch(genometyp) {
	case 1 : genome = new GABin2DecGenome(map, objective); break;
	case 2 : genome = new GARealGenome(alleles, objective); break;
}

Funktioniert auch wunderbar.
Ich möchte nun im weiteren Code mittels einer weiteren Abfrage auf die Funktion "float phenotype(unsigned int n) const" der Klasse GABin2DecGenome auf das Objekt genome anwenden. Dazu habe ich folgende Abfrage geschrieben:

C++:
if (genometyp ==1){
 
*genome = ga->population().individual(0);  
cout << genome->phenotype(0);
}

Es wird folgender Fehler ausgegeben :
Code:
`phenotype' undeclared (first use this function)

Ich denk mal, dass es daran liegt das es keine Funktion der Basisiklasse ist, oder? Wie bekomme ich das trotzdem hin? Ich dachte er berücksichtigt das garnicht, wenn die Schleife mit genometyp == 1 abgefragt wird ist das Objekt genome aus der Klasse GABin2Dec und damit die Funktion anwendbar, oder nicht?

Viele Grüße

Guddy
 
Ich dachte er berücksichtigt das garnicht, wenn die Schleife mit genometyp == 1 abgefragt wird ist das Objekt genome aus der Klasse GABin2Dec und damit die Funktion anwendbar, oder nicht?
Das würde nur funktionieren, wenn du in der Basisklasse eine virtuelle Methode "phenotype" hättest.
Aber du kannst die Sache mittels Casten lösen:
C++:
cout << ((GABin2DecGenome *)genome)->phenotype(0);
Gruß
MCoder
 
Zurück