Intanto grazie infinite per il tempo che mi stai dedicando!!!!!

Originariamente inviata da
MItaly
Onestamente non riesco a capire neanche lontanamente di che stai parlando... fornisci casi d'uso concreti.
Questa è la frase che mi ha acceso il campanello d'allarme (presa da =qui):
Si tenga presente che affinché il costrutto
dynamic_cast lavori correttamente è necessario che il supporto
RTTI del compilatore sia attivo (spesso, nella produzione del
firmware, si sceglie di non attivare
RTTI poiché questa funzionalità assorbe una quantità di risorse non trascurabile).
Se questo non è vero, nel senso che è magari una informazione "vecchia", allora procedo in questo modo.
Il problema concreto è il seguente: la determinazione dell'azione sismica varia/evolve con l'evolvere della normativa e con il sito in cui sorge la costruzione (più altri fattori, ma per adesso bastano questi).
Per gestire il sito, pensavo quindi creo una classe base che raccoglie le informazioni che sono "normativa indipendenti" come indirizzo, quota sul livello del mare, latitudine, longitudine, ecc.
Da questa poi derivo una classe specifica per ogni normativa, in cui raccolgo le informazioni specifiche di quella normativa (ad esempio, quella attuale definisce dei parametri specifici di pericolosità sismica del sito)
Avremo quindi
codice:
class Base
{
//indirizzo, altitudine, ecc, "normativa indipendenti"
//metodi per gestire queste informazioni
//distruttore virtuale
}
class Normativa1:public Base
{
//informazioni aggiuntive, come ad esempio pericolosità sismica del sito
//metodi per gestire queste informazioni
setPericolosita(param1, param2, ecc);
}
class Normativa2:public Base
{
//informazioni aggiuntive, come ad esempio pericolosità sismica del sito
//metodi per gestire queste informazioni
setPericolosita(param3, param4, ecc);
}
Se il nome del metodo setPericolosita è uguale nelle due classi derivate, i parametri sono di tipo diverso (nella fattispecie sono delle enum e delle struct create per ciascuna normativa, in quanto specifiche per ciascuna di esse).
Ecco da dove nasce tutto il problema.
Tralasciamo per ora il problema ipotizzato del confronto su grafico, che per genera solo confusione, limitiamoci alla possibilità di partire:
- da un puntatore a una classe base,
- creare un'istanza dell'oggetto ad una classe derivata in base alla normativa scelta,
- accedere ai metodi della classe derivata senza dover definire il corrispettivo metodo virtuale nella classe base.
Spero di aver chiarito il problema.
Grazie