fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Resource
  5. {
  6. Resource(int id)
  7. {
  8.  
  9. m_id = id;
  10. if(id == 3)
  11. {
  12. throw "Error during initialize: id can't be 3";
  13. }
  14. std::cout << "initialize resource with id: " << id << std::endl;
  15.  
  16. }
  17.  
  18. ~Resource()
  19. {
  20. std::cout << "Destroy Resource with id: " << m_id << std::endl;
  21. }
  22.  
  23. private:
  24. int m_id;
  25. };
  26.  
  27. struct ResourceWrapper
  28. {
  29. ResourceWrapper(int id1, int id2, int id3, int id4, int id5)
  30. : m_rc1(id1),
  31. m_rc2(id2),
  32. m_rc3(id3),
  33. m_rc4(id4),
  34. m_rc5(id5)
  35. {
  36. }
  37.  
  38. private:
  39. Resource m_rc1;
  40. Resource m_rc2;
  41. Resource m_rc3;
  42. Resource m_rc4;
  43. Resource m_rc5;
  44. };
  45.  
  46. int main()
  47. {
  48.  
  49. {
  50. std::cout << "without errors:" << std::endl;
  51. ResourceWrapper rc(5,6,7,8,9);
  52. }
  53.  
  54. std::cout << "==========================" << std::endl;
  55. try
  56. {
  57. std::cout << "with errors:" << std::endl;
  58. ResourceWrapper rc(1,2,3,4,5);
  59. }
  60. catch(const char* error)
  61. {
  62. std::cout << "Error: " << error << std::endl;
  63. }
  64. // your code goes here
  65. return 0;
  66. }
Success #stdin #stdout 0s 4384KB
stdin
Standard input is empty
stdout
without errors:
initialize resource with id: 5
initialize resource with id: 6
initialize resource with id: 7
initialize resource with id: 8
initialize resource with id: 9
Destroy Resource with id: 9
Destroy Resource with id: 8
Destroy Resource with id: 7
Destroy Resource with id: 6
Destroy Resource with id: 5
==========================
with errors:
initialize resource with id: 1
initialize resource with id: 2
Destroy Resource with id: 2
Destroy Resource with id: 1
Error: Error during initialize: id can't be 3