Aquí está mi problema: Tengo un método virtual definido en un archivo .h al que quiero llamar en una clase que hereda de la clase base. Lamentablemente, el método en la clase derivada no se llama. ¿Hay una mejor manera de implementar lo que estoy tratando de hacer?Herencia en C++
#ifndef ofxBASE_SND_OBJ
#define ofxBASE_SND_OBJ
#include "ofConstants.h"
class ofxBaseSndObj {
public:
virtual string getType(){}
string key;
};
#endif
Aquí es mi clase de zumbido
#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;
}
Luego, en otra clase Trato de llamar de esta manera:
string ofxSndObj::createFilter(ofxBaseSndObj obj)
{
string str = obj.getType();
if(str.compare("ofxSOBuzz") == 0)
{
printf(" all is well ");
}
}
En el método encima tengo que poder pasar en uno de m cualquier tipo de objeto que extienda el objeto ofxBaseSndObj. Cualquier sugerencia o puntero sería muy apreciada. ¡Gracias!
Hasta donde sé, su encabezado (donde define ofxBaseSndObj) no compilará porque tiene una función con tipo de retorno no nulo sin declaración de retorno. ¿Cómo te las arreglas para ejecutar esto? – Arkadiy
¡¡¡Sobre el momento de aceptar una respuesta como correcta !! Haga clic en una de las marcas de verificación junto a la respuesta que cree que responde mejor a la pregunta. –