我注意到类似C++的东西。
SomeClass obj = SomeClass();
int boo = obj["foo"];
这叫什么,我该怎么办?
例
class Boo {
public:
int GetValue (string item) {
switch (item) {
case "foo" : return 1;
case "apple" : return 2;
}
return 0;
}
}
Boo boo = Boo();
int foo = boo.GetValue("foo");
// instead of that I want to be able to do
int foo = boo["foo"];
最佳答案
要使用[]
,您需要重载operator[]
:
class Boo {
public:
int operator[](string const &item) {
if (item == "foo")
return 1;
if (item == "apple")
return 2;
return 0;
}
};
您可能想知道
std::map
已经提供了您似乎正在寻找的东西:std::map<std::string, int> boo;
boo["foo"] = 1;
boo["apple"] = 2;
int foo = boo["foo"];
明显的区别是,当/如果使用它查找以前未插入的值,它将使用该键和值0插入新项。
关于c++ - 通过[“”]或[int]用于自定义类的C++访问组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9304383/