Quote Originariamente inviata da shodan Visualizza il messaggio
1) Come sempre dipende dal contesto. La prima opzione ha il vantaggio di non avere accoppiamento tra le varie classi, il che da un design più pulito, cosa che invece non avviene con le altre due opzioni. Tradotto in soldoni, la prima opzione rende indipendenti le classi, le altre due no; il vantaggio è nel riutilizzo del codice: nella prima opzione hai le classi come entità singole per cui puoi riusarne una senza che le altre due sappiano che esiste, cosa che non è detto avvenga nelle altre opzioni.
Credo che il tipo di domanda da me faccia intuire la mia immensa esperienza , per cui mi risulta difficile capire quali possano essere i contesti...Intanto, optiamo per la soluzione più pulita e più riciclabile, quando poi capirò i diversi contesti, vedremo di adattarci, per ora, avanti in questo modo.
Sempre riguardo alla mia immensa esperienza , il fatto di essere indipendenti due classi, significa che se sono in due file header diversi, non serve fare #include di uno nell'altro, corretto?

Quote Originariamente inviata da shodan Visualizza il messaggio
2) Fa un esempio concreto di cosa intendi.
Allora, sperando di riuscire ad essere conciso e preciso, ci provo:
il programma può(vorrei, dato che il tutto è ancora under construction) permettere di eseguire calcoli secondo diverse normative, le quali prevedono parametri/coefficienti diversi da applicare durante i calcoli. Quindi pensavo di creare una classe normativa base, da cui derivare le classi per gestire la normativa specifica (ad esempio, all'interno di ciascuna normativa torna comodo definire delle enum apposite, ecc).

L'altra classe potrebbe essere quella per gestire l'azione sismica di progetto, che varia in base alla normativa scelta, quindi anche qui, una classe base, da cui derivare quelle specifiche per ciascuna normativa.

Vorrei avere l'opportunità/potrebbe esserci la necessità, di eseguire il calcolo del medesimo elemento, ma con due differenti normative, prima ne eseguo uno, poi ne eseguo un altro per vedere cosa comporta il cambio di norma (ad esempio, edificio esistente fatto con vecchia norma, verifiche con vecchia norma, verificare che vada bene anche con quella attuale, potrebbe essere un caso).

In pratica, durante il cambio di norma, non vorrei che rimanesse scollegata l'azione sismica, ma un qualcosa mi verifichi che l'azione sismica (ma in realtà la questione va estesa ai materiali, ai sovraccarichi, al tipo di verifiche, ecc) sia coerente con la norma applicata, e non riesco a capire come gestire questo aspetto.

Quote Originariamente inviata da shodan Visualizza il messaggio
3) Lascia perdere weak_ptr che si usa solo in casi particolari: dentro una classe si usano solo shared_ptr o unique_ptr, la cui scelta si decide in base al contesto in cui si opera.
Ok. Da quanto letto in giro, i weak_ptr danno una mano per evitare i riferimenti circolari e/o nelle strutture ad albero, se ricordo bene, ma direi che non è il mio caso.