Sto lavorando con un codice di basso livello (ovvero intendo codice che non può usare le eccezioni C ++ e / o la libreria standard) che fa un uso pesante delle classi.
Fondamentalmente, ogni classe contiene un metodo bool initialize();
che viene chiamato subito dopo l'istanziazione per inizializzare tutti i suoi componenti, gli oggetti sottostanti e così via.
Questo perché i costruttori in C ++ non possono restituire un valore. Inoltre, tutti i metodi che allocano memoria, utilizzano API di sistema che potrebbero non funzionare, ecc. Devono essere controllati per ottenere un valore positivo.
Tuttavia, questo approccio diventa molto fastidioso dopo un po '.
Considera il seguente codice:
bool createHelloWorldString(String* string)
{
String str1;
if (!str1.initialize())
return false;
String str2;
if (!str2.initialize())
return false;
// Need to check return value as this method may fail because it dynamically allocates memory
if (!str1.set("Hello "))
return false;
if (!str2.set("world"))
return false;
if (!str1.append(&str2))
return false;
return string->append(&str1);
}
Nota: Questo potrebbe non essere il miglior esempio, ma mostra chiaramente dove si trova il problema.
Ci sono altri modi per gestire gli errori o sono bloccato con questo?