fork download
  1. #include <iostream>
  2. #include <stdexcept>
  3.  
  4. /*
  5.  * Klassen zur Kapselung der Verwaltung dieser Resourcen vom Typ A und B.
  6.  */
  7.  
  8. class AResource {
  9. public:
  10. AResource () {
  11. std::cout << "Initializing A...\n";
  12. if (/*error*/ false) throw std::runtime_error ("A initialization faild");
  13. m_value = 42; // <- Initialisiere die Daten dieser Ressource
  14. }
  15. ~AResource () {
  16. std::cout << "Cleaning up A\n";
  17. // Verwende m_value um die Resource freizugeben
  18. }
  19. // Deklariere hier alle Daten die zu dieser Resource gehören...
  20. int m_value;
  21. };
  22.  
  23. class BResource {
  24. public:
  25. BResource () {
  26. std::cout << "Initializing B...\n";
  27. if (/*error*/ true) throw std::runtime_error ("B initialization faild");
  28. m_value = 42; // <- Die Daten dieser Ressource
  29. }
  30. ~BResource () {
  31. std::cout << "Cleaning up B\n";
  32. // Verwende m_value um die Resource freizugeben
  33. }
  34. // Deklariere hier alle Daten die zu dieser Resource gehören...
  35. int m_value;
  36. };
  37.  
  38. /*
  39.  * Verwendung dieser Resourcen (Usercode)
  40.  */
  41.  
  42. void tuwas () {
  43. AResource a;
  44. BResource b;
  45.  
  46. // Hier mit a und b arbeiten...
  47. }
  48.  
  49. int main() {
  50. try {
  51. tuwas ();
  52. } catch (std::exception& e) {
  53. std::cout << e.what () << '\n';
  54. }
  55. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
Initializing A...
Initializing B...
Cleaning up A
B initialization faild