假设我在某处定义了这些函数:
std::string ws_to_s(const wchar_t*);
std::string ws_to_s(const std::wstring&);
std::wstring s_to_ws(const char*);
我写了这堂课:
class runtime_error_w : public std::runtime_error {
public:
runtime_error_w() = default;
runtime_error_w(const wchar_t* what_arg)
: runtime_error(ws_to_s(what_arg)) { }
runtime_error_w(const std::wstring& what_arg)
: runtime_error(ws_to_s(what_arg)) { }
virtual const std::wstring what_w() const noexcept {
return ws_to_s(what());
}
};
到目前为止,这对我有用,但这种方法有问题吗?
请注意,what_w()
会返回std::string
个对象,而不是const char*
。
答案 0 :(得分:0)
根据问题下方的评论,我同意使用此课程糟糕的主意,因为在构建bad_alloc
时可能会wstring
提升