giulioballio
23-07-2007, 13:40
Ho un dubbio abbastanza specifico sull'ereditarietà. In main.cpp definisco:
class Child: public Parent
{
public:
void eval(real *values, const real *x) {anything}
};
il cui unico scopo è di definire eval che era virtual in Parent. Ora sempre in main.ccp scrivo:
Child obj;
Solver pde(obj);
avendo definito in sover.cpp il seguente costruttore:
Solver::Solver(Parent& input)
{
input.eval(values,x);
}
ottengo un errore perché eval è visto come quella del genitore, cioè come virtual. D'altro canto non posso chiedere un Child& come argomento perché Solver non sa della sua esistenza.. potrei rimediare mettendoci una pezza, tuttavia sono interessato a capire come è meglio che io risolva la situazione secondo la logica di C++. Grazie!
class Child: public Parent
{
public:
void eval(real *values, const real *x) {anything}
};
il cui unico scopo è di definire eval che era virtual in Parent. Ora sempre in main.ccp scrivo:
Child obj;
Solver pde(obj);
avendo definito in sover.cpp il seguente costruttore:
Solver::Solver(Parent& input)
{
input.eval(values,x);
}
ottengo un errore perché eval è visto come quella del genitore, cioè come virtual. D'altro canto non posso chiedere un Child& come argomento perché Solver non sa della sua esistenza.. potrei rimediare mettendoci una pezza, tuttavia sono interessato a capire come è meglio che io risolva la situazione secondo la logica di C++. Grazie!