![](/img/trans.png)
[英]No operator “>>” for std::string>>std::string
[英]String operator like std::string
說我有一個功能:
void foo(const std::string& str);
我可以調用該函數:
foo("my string");
std::string
如何接受字符串代替類型? 它是重載運算符嗎? 我正在創建自己的字符串類,並且此功能至關重要。
接到電話
foo("my string");
編譯器必須經過各種步驟來決定應解析為哪個函數調用。
foo
。 foo
函數,它將嘗試查找可以用給定參數調用的所有可行函數。 如果有多個匹配項,它將嘗試根據給定的參數找到最佳匹配項。 如果只有一個可行的功能,則編譯器繼續進行。 如果沒有可行的功能,則會出現編譯錯誤。 foo
函數,它將嘗試查看用於調用該函數的參數是否與參數類型匹配。 如果是,則編譯器繼續。 否則,將出現編譯器錯誤。 弄清楚參數是否與函數的參數類型匹配的邏輯太長,無法在此處描述。 您可以在http://en.cppreference.com/w/cpp/language/overload_resolution和http://en.cppreference.com/w/cpp/language/implicit_conversion上了解更多信息。
在您的情況下,可以使用std::string
的構造函數將"my string"
轉換為std::string
。 通話
foo("my string");
等效於:
foo(std::string("my string"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.