Appel de méthode de la classe dérivée de la classe de base de référence

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;
}

Je voudrais que cette de suite dans la "Classe Unusual_Material" affiché sur la console. Est-il un moyen que je peux accomplir cela? Dans mon programme j'ai une classe de matière à partir de laquelle d'autres plus spécifiques des matériaux sont dérivés. La méthode Matériel::foo() représente une méthode de Matériau qui est suffisant pour la plupart des matériaux, mais occationally, un autre foo() doit être défini pour un matériau avec des propriétés inhabituelles.

Tous les objets dans mon programme contient un champ de Matériau. Dans le cas où ils sont affectés à un matériau inhabituel, je voudrais la dérivée, inhabituel foo être appelé.

C'est probablement assez facile, voire impossible, mais je ne peux pas le comprendre de toute façon.

Grâce

Comme une note, un code comme Material strange = Unusual_Material(); peut entraîner l'objet de découpage problème: stackoverflow.com/questions/274626/...

OriginalL'auteur user487100 | 2010-11-17