Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using std::cout;
  5. using std::endl;
  6. using std::string;
  7.  
  8. enum class errorCode {
  9. undefine = 0,
  10. unknown,
  11. undecler,
  12. informer,
  13. serverError,
  14. userError
  15. };
  16.  
  17. namespace std {
  18. template<>
  19. struct is_error_code_enum<errorCode> : true_type {};
  20. };
  21.  
  22. struct errorCodeCategory : std::error_category
  23. {
  24. string message(int errorCode) const noexcept override;
  25. const char* name()const noexcept override; // i override this method here
  26. };
  27.  
  28. string errorCodeCategory::message(int errCode) const noexcept
  29. {
  30. switch (static_cast<errorCode>(errCode))
  31. {
  32. case errorCode::informer:
  33. return "informer";
  34. break;
  35.  
  36. case errorCode::undefine:
  37. return "undefine";
  38. break;
  39.  
  40. case errorCode::undecler:
  41. return "undecler";
  42. break;
  43.  
  44. default:
  45. return "Unknown result";
  46. break;
  47. }
  48. }
  49.  
  50. const char* errorCodeCategory::name() const noexcept
  51. {
  52. return "errorCodeCategory";
  53. }
  54.  
  55. const errorCodeCategory er;
  56.  
  57. std::error_code make_error_code(errorCode e)
  58. {
  59. return {static_cast<int>(e) , er };
  60. }
  61.  
  62. int main()
  63. {
  64. std::error_code er = make_error_code(errorCode::informer);
  65. std::error_code er1 = make_error_code(errorCode::serverError);
  66. std::error_code er2 = make_error_code(errorCode::unknown);
  67. std::error_code er3 = make_error_code(errorCode::undecler);
  68.  
  69. cout << er.message << " " << er.name; // i override name function but still i can not use it
  70. return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement