Salve a tutti, sto scrivendo delle classi che mi serviranno per risolvere dei problemi di meccanica analitica. Per me sarebbe importante fare una cosa del genere:
codice:
//Mathvector è una classe che modella un vettore inteso in senso matematico
class Base{
public:
    //costruttori e distruttore
    virtual MathVector NetForce();           //calcola la somma vettoriale di tutte le forze agenti sul corpo
    
      MathVector speed(double seconds);  
     /* vari metodi che utilizzano al loro interno i metodi virtuali.  */
Protected:
     double mass;
}
class Derived: public Base{
     //reimplementare solo i metodi virtuali
}

MathVector Base::speed(double seconds) //per esempio
{
     return NetForce()/mass*seconds;
}
Pensandola in queso modo io potevo differenziare i vari oggetti in base alle forze agenti su di essi (per esempio la classe derivata potrebbe aggiungere forze dissipative, o reazioni vincolari).
La domanda è se posso essere sicuro che quando chiamo un metodo non virtuale della classe derivata esso al proprio interno chiami il metodo virtuale esatto.
Cioè che
codice:
Base* base = new Base();
Base *derived = new Derived();
base->speed(); //chiami Base::NetForce();
derived->speed(); //chiami Derived::NetForce();
Su alcuni test che ho fatto funziona, ma leggendo in giro dicono che questo approccio sia pericoloso e che il comportamento del programma potrebbe essere indefinito: è vero o va bene così?
Avete mai fatto qualcosa di simile?
Cambiando approccio dovrei reimplementare praticamente tutti i metodi della classe base, che però sono molti e perderei il vantaggio del poterli derivare da una classe base che astrae il problema di calcolare gli stati di un corpo libero indipendentemente dalle forze/vincoli applicati?

EDIT:
In particolare ho trovato un articolo che parlava di una situazione simile alla mia e cito testualmente:
Il risultato in queste situazioni e` che il comportamento che una classe puo` avere e` molto difficile da controllare e potrebbe essere potenzialmente errato; l'errore legato a situazioni di questo tipo e` noto in letteratura come fragile class problem e puo` essere causa di forti inconsistenze.