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;
}
Vorrei che questo risultasse nella "Classe Unusual_Material" visualizzata alla console. C'è un modo per ottenerlo? Nel mio programma ho un materiale di classe da cui derivano altri materiali più specifici. Il metodo Material :: foo() rappresenta un metodo in Materiale che è adeguato per la maggior parte dei materiali, ma occidentalmente, un altro foo() deve essere definito per un materiale con proprietà insolite.Metodo della classe derivata dalla classe base riferimento
Tutti gli oggetti nel mio programma contengono un campo Materiale. Nel caso in cui gli venga assegnato un materiale insolito, mi piacerebbe che venisse chiamato l'insolito foo.
Probabilmente questo è piuttosto facile o impossibile, ma non riesco a capirlo in alcun modo.
Grazie
Come nota, codice come 'Materiale strano = Unusual_Material();' può causare il problema affettare oggetto: http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c – birryree