#include <iostream>
#include <stdexcept>
/*
* Klassen zur Kapselung der Verwaltung dieser Resourcen vom Typ A und B.
*/
class AResource {
public:
AResource () {
std::cout << "Initializing A...\n";
if (/*error*/ false) throw std::runtime_error ("A initialization faild");
m_value = 42; // <- Initialisiere die Daten dieser Ressource
}
~AResource () {
std::cout << "Cleaning up A\n";
// Verwende m_value um die Resource freizugeben
}
// Deklariere hier alle Daten die zu dieser Resource gehören...
int m_value;
};
class BResource {
public:
BResource () {
std::cout << "Initializing B...\n";
if (/*error*/ true) throw std::runtime_error ("B initialization faild");
m_value = 42; // <- Die Daten dieser Ressource
}
~BResource () {
std::cout << "Cleaning up B\n";
// Verwende m_value um die Resource freizugeben
}
// Deklariere hier alle Daten die zu dieser Resource gehören...
int m_value;
};
/*
* Verwendung dieser Resourcen (Usercode)
*/
void tuwas () {
AResource a;
BResource b;
// Hier mit a und b arbeiten...
}
int main() {
try {
tuwas ();
} catch (std::exception& e) {
std::cout << e.what () << '\n';
}
}