Hier ist mein Problem: Ich habe eine virtuelle Methode in einer .h-Datei definiert, die ich in einer Klasse aufrufen möchte, die von der Basisklasse erbt. Leider wird die Methode in der abgeleiteten Klasse nicht aufgerufen. Gibt es einen besseren Weg, um das zu implementieren, was ich versuche?Vererbung in C++
#ifndef ofxBASE_SND_OBJ
#define ofxBASE_SND_OBJ
#include "ofConstants.h"
class ofxBaseSndObj {
public:
virtual string getType(){}
string key;
};
#endif
Hier ist meine Summen Klasse
#ifndef OFXSO_BUZZ
#define OFXSO_BUZZ
#include "ofxBaseSndObj.h"
class ofxSOBuzz : public ofxBaseSndObj
{
public:
string getType();
};
#endif
ofxSOBuzz.cpp
string ofxSOBuzz::getType()
{
string s = string("ofxSOBuzz");
printf(" ********* returning string type %s", s.c_str()); // doesn't get called!
return s;
}
Dann in einer anderen Klasse ich versuche, es zu nennen diese Art und Weise:
string ofxSndObj::createFilter(ofxBaseSndObj obj)
{
string str = obj.getType();
if(str.compare("ofxSOBuzz") == 0)
{
printf(" all is well ");
}
}
Bei dem Verfahren oben muss ich in der Lage sein, einen von m zu übergeben alle Arten von Objekten, die alle das ofxBaseSndObj-Objekt erweitern. Alle Vorschläge oder Hinweise würden sehr geschätzt werden. Vielen Dank!
Soweit ich weiß, wird Ihre Kopfzeile (wo Sie ofxBaseSndObj definieren) nicht kompilieren, weil Sie eine Funktion mit nicht void Rückgabetyp ohne return-Anweisung haben. Wie hast du das geschafft? – Arkadiy
Über Zeit, um eine Antwort als richtig zu akzeptieren !! Klicken Sie auf eines der Häkchen neben der Antwort, von der Sie denken, dass sie die Frage am besten beantwortet. –