gpt4 book ai didi

C++ 通过 [""] 或 [int] 访问自定义类组件

转载 作者:行者123 更新时间:2023-11-30 00:56:54 24 4
gpt4 key购买 nike

我注意到 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] 访问自定义类组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9304383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com