使用std::out_of_range constructor
代碼與舊的編譯器字符串自動轉換爲const char *到的std :: string
對於一些老的編譯器,當我在此通過接收「沒有實例構造函數」錯誤迷迷糊糊的std::out_of_range
的定義是
class out_of_range : public logic_error {
public:
out_of_range(const string& message);
};
在最近的版本,他們已經增加了第二個構造
class out_of_range : public logic_error {
public:
out_of_range(const string& message);
out_of_range(const char *message);
};
我是想合作的代碼mpile做了以下構造函數調用:
std::out_of_range("Some Error Message");
加入#include <string>
編譯器能夠const char*
轉換爲std::string
後?
這是預期的行爲?
這與你可以做的原因相同。 'std :: string str =「foobar」;'見例如[這個'std :: string'構造函數參考](http://en.cppreference.com/w/cpp/string/basic_string/basic_string)以獲得更多信息(它是列表中標記爲'5'的構造函數,您應該看看)。 –