class Material
{
public:
void foo()
{
cout << "Class Material";
}
};
class Unusual_Material : public Material
{
public:
void foo()
{
cout << "Class Unusual_Material";
}
};
int main()
{
Material strange = Unusual_Material();
strange.foo(); //outputs "Class Material"
return 0;
}
Me gustaría que esto dé como resultado que se muestre el "Material de clase inusual" en la consola. ¿Hay alguna manera de lograr esto? En mi programa, tengo una clase Material de la cual se derivan otros materiales más específicos. El método Material :: foo() representa un método en Material que es adecuado para la mayoría de los materiales, pero ocasionalmente, otro foo() necesita definirse para un material con propiedades inusuales.Método de clase derivado de llamada de la referencia de clase base
Todos los objetos en mi programa contienen un campo Material. En caso de que se les asigne un material inusual, me gustaría que se llame al foo derivado e inusual.
Esto es probablemente bastante fácil o imposible, pero no puedo entenderlo de ninguna manera.
Gracias
Como una nota, un código como 'material extraño = Unusual_Material();' puede resultar en el problema de rebanado objeto: http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – birryree