07/01/2024 - zoro82 ha scritto:
Ma non mi funziona, cioè nel secondo caso mi richiama il serbatoio di default.
Quando si istanzia un oggetto di una generica classe, per prima cosa verranno “creati” gli eventuali attributi (nell'ordine in cui sono dichiarati nella definizione della classe) e poi verrà eseguito l'eventuale codice relativo al costruttore.
Detto ciò, dal momento che la classe Ferro_stiro contiene tra i propri attributi un oggetto della classe Serbatoio, è ovvio che venga richiamato il costruttore di default Serbatoio() prima ancora di eseguire le istruzioni relative al costruttore di Ferro_stiro.
Se poi vuoi “costruire” l'attributo s con un costruttore diverso da quello di default, come detto anche da @fededevi, l'unico modo è utilizzare una lista di inizializzazione:
Ferro_stiro(int potenza, int capacita) : s(capacita)
{
...
}
In ogni caso vale la pena sottolineare che l'esempio che hai riportato non ha molto senso e che quel codice non potrebbe mai compilare, in quanto new ritorna un puntatore ed s non sembra esserlo…
Magari se ci dici cosa stai cercando di fare e cosa intendi con “istanziare un oggetto dentro un costruttore” possiamo esserti maggiormente d'aiuto.