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 souhaite que cela entraîne l'affichage de la "Class Unusual_Material" sur la console. Est-ce que je peux y arriver? Dans mon programme, j'ai un matériau de classe à partir duquel d'autres matériaux plus spécifiques sont dérivés. La méthode Material :: foo() représente une méthode dans Material qui est adéquate pour la plupart des matériaux, mais à l'occasion, un autre foo() doit être défini pour un matériau avec des propriétés inhabituelles.Méthode de classe dérivée d'appel à partir de la référence de classe de base
Tous les objets de mon programme contiennent un champ Matériau. Dans le cas où ils sont affectés d'un matériel inhabituel, je voudrais que le foo dérivé, inhabituel soit appelé.
C'est probablement soit facile, soit impossible, mais je ne peux pas le comprendre de toute façon.
Merci
Comme une note, le code comme 'étrange = Unusual_Material() Matériel,' peut entraîner le problème de découpage en tranches d'objet: http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – birryree