Tôi đã xem qua đoạn mã sau vào VS2008ngoại lệ lớp học với một char * constructor
if (!CreateProcess(NULL,
const_cast<LPWSTR>(ss.str().c_str()),
NULL,
NULL,
FALSE,
CREATE_NO_WINDOW|NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi))
{
throw std::exception("Unable to format Device");
}
Bây giờ tôi porting mã để mingw gcc và tôi nhận được lỗi
error: no matching function for call to 'std::exception::exception(const char [23])'
tra các vấn đề tôi nhận thấy rằng Visual Studio có một ngoại lệ tập tin mà không có một lớp học ngoại lệ và không có trong char *. Một số định nghĩa trông giống như thế này
__CLR_OR_THIS_CALL exception();
__CLR_OR_THIS_CALL exception(const char *const&);
__CLR_OR_THIS_CALL exception(const char *const&, int);
__CLR_OR_THIS_CALL exception(const exception&);
exception& __CLR_OR_THIS_CALL operator=(const exception&);
virtual __CLR_OR_THIS_CALL ~exception();
virtual const char * __CLR_OR_THIS_CALL what() const;
Câu hỏi của tôi là làm cách nào để tránh sự cố xây dựng này trên mingw gcc? Tôi có nên tạo một lớp mới kế thừa từ std :: runtime_error và ném thay vào đó không?
'std :: exception :: exception (const char *)' không phải là một tiêu chuẩn C++, thay vì một MS cụ thể implation http://en.cppreference.com/w/cpp/error/exception/exception –