Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- using std::cout;
- using std::endl;
- using std::string;
- enum class errorCode {
- undefine = 0,
- unknown,
- undecler,
- informer,
- serverError,
- userError
- };
- namespace std {
- template<>
- struct is_error_code_enum<errorCode> : true_type {};
- };
- struct errorCodeCategory : std::error_category
- {
- string message(int errorCode) const noexcept override;
- const char* name()const noexcept override; // i override this method here
- };
- string errorCodeCategory::message(int errCode) const noexcept
- {
- switch (static_cast<errorCode>(errCode))
- {
- case errorCode::informer:
- return "informer";
- break;
- case errorCode::undefine:
- return "undefine";
- break;
- case errorCode::undecler:
- return "undecler";
- break;
- default:
- return "Unknown result";
- break;
- }
- }
- const char* errorCodeCategory::name() const noexcept
- {
- return "errorCodeCategory";
- }
- const errorCodeCategory er;
- std::error_code make_error_code(errorCode e)
- {
- return {static_cast<int>(e) , er };
- }
- int main()
- {
- std::error_code er = make_error_code(errorCode::informer);
- std::error_code er1 = make_error_code(errorCode::serverError);
- std::error_code er2 = make_error_code(errorCode::unknown);
- std::error_code er3 = make_error_code(errorCode::undecler);
- cout << er.message << " " << er.name; // i override name function but still i can not use it
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement