我想在C++中創建一個類。這個班級必須管理一個集合。 好的,沒問題,我當然想使用operator [],但在這種情況下,我希望不是按位置索引,而是按名稱==>,這意味着使用字符串索引器。創建一個類索引運算符[]允許字符串參數(字符串索引)
看來,這種事情也不是那麼高興我的編譯器:
// In hpp
class myclass {
...
...
std::string operator[](const std::string& name);
}
// In cpp
std::string myclass::operator[](const std::string& name) {
...
}
// In main
myclass m;
std::string value = m["Name"];
編譯器告訴我,他解決不了,是因爲運營商[爲const char [5]不存在。 好行 我可以想象這個...... 編譯器認爲通過調用m [「Name」]我試圖調用一個運算符承認char *而不是字符串...好吧 讓我們用運算符[]允許char *作爲參數...什麼都不是。
有人能告訴我如何以最佳實踐的方式在C++中實現這樣的結果嗎?我想這是通過字符串索引而不是整數索引的常見問題... 謝謝。
當您嘗試'的std :: string值= M [的std :: string( 「名稱」)發生了什麼;` – SingleNegationElimination 2010-11-27 22:13:29
我敢肯定,編譯器是* *她@ – Inverse 2010-11-27 22:57:32
TokenMacGuy,std :: string有一個採用char *的ctor,所以這應該不重要。 – Johnsyweb 2010-11-28 01:03:05