Sono preso tra due modelli concettuali su come costruire oggetti, e sto avendo problemi a capire quale standard voglio adottare.
Preferisco programmare in .NET e spesso provo a usare RAII e le proprietà di sola lettura per creare oggetti immutabili con i loro dati passati attraverso i parametri del costruttore. Questo è stato un grande passo avanti rispetto ai giorni VB6 in cui dovevamo simulare i costruttori e per convenzione chiamare "Init" o "Factory.Create" per ottenere oggetti in buono stato.
Tuttavia, faccio spesso wrapper COM-callable per permettermi di chiamare le funzioni tramite l'automazione da altre applicazioni. Come probabilmente sapete, COM vuole che gli oggetti abbiano un costruttore senza parametri. Questa è una dissonanza con lo schema RAI / immutabile che ho usato con tale successo nel mondo .NET.
Ricordo modelli di oggetti più vecchi come ADO in cui di solito istanziate un oggetto, impostate proprietà come ConnectionString, quindi chiamate Open. L'oggetto potrebbe essere immutabile non tramite una dichiarazione ReadOnly, ma lanciando un'eccezione "Can not change while open" sul setter della proprietà.
È questo il modello migliore da utilizzare per COM? Mi sto perdendo un modo migliore per dare una pelle a questo gatto? Dato che RAII è uscito dalla comunità C ++, come gestiscono la COM basandosi su un diverso schema di inizializzazione?