我想重載下標運算符-i知道它作爲元素訪問運算符采取char *或std ::字符串。重載矢量下標運算符采取一個字符*或字符串
我有一個結構
struct foo
{
int Age;
const char *Name;
};
和將要舉辦這個結構的多個實例,一個std ::向量。
std::vector<foo>bar;
我的目標是能夠通過調用他們的名字來訪問每個富酒吧。
std::cout<<"Simon's age is: "<<bar["simon"];
我剛剛被谷歌搜索了很久,而試圖找到一個例子或東西走下車,沒有運氣。
我認爲這會工作
foo operator[](char *Name)
{
for(int i=0;i<bar.size();i++)
{
if(bar[i].Name == Name){return bar[i];}
}
}
但是顯然我做錯了
我知道這可能是與一個std ::地圖做,但我寧願使用一個std ::矢量,謝謝。
但是,如果您選擇提供幫助,我將非常感謝您的幫助。謝謝 。
*「但顯然我做錯了什麼」* - 錯誤是什麼?沒有信息,我們無法真正幫助你 – hlt
你有沒有任何理由不使用std :: map,它只提供你正在尋找的功能? – user463035818
不,你不能像這樣重載一個下標操作符。你可能想創建一個'std :: map'。 –