0
我寫我自己的模板函數模板的參數問題:關於C++
[Error] call of overloaded 'begin(std::__cxx11::string [3])' is ambiguous
[Note] candidate: T* begin(T (&)[N]) [with T = std::__cxx11::basic_string<char>; long long unsigned int N = 3ull]
當我參數類型更改爲常量
:
template <typename T, size_t N> T* begin(const T (&arr)[N])
{
return arr;
}
程序正常運行。它是如何發生的? 但是當我再次使用字符數組來調用它,報告新的錯誤:
[Error] invalid conversion from 'const char*' to 'char*' [-fpermissive]
那麼,問題來了,我怎麼能解決這個問題? 謝謝。
當你的代碼被使用時,你有'use namespace std;'的地方嗎? –
@πάνταῥεῖ我用std :: cout;使用std :: endl;使用std :: string;在你回覆之前。在將聲明更改爲使用namespace std後;問題已經解決了。有什麼關係? –
有'std :: begin'標準函數。你想刪除'使用命名空間標準',這是一個壞主意。閱讀錯誤信息到最後,你會看到第二個功能在哪裏。 –