gpt4 book ai didi

c++ - operator[] 重载以接受 char * 作为下标

转载 作者:太空狗 更新时间:2023-10-29 19:57:41 27 4
gpt4 key购买 nike

我有以下代码:

class IList{
public:
virtual const Pair *get(const char *key) const = 0;

inline const Pair *operator[](const char *key) const;
};

inline const Pair *IROList::operator[](const char *key) const{
return get(key);
}

代码编译正常,但是当我尝试使用它时:

IList *list = (IList *) SomeFactory();
Pair *p;
p = list["3 city"];

我得到了:

test_list.cc:47:19: error: invalid types ‘IList*[const char [7]]’ for array subscript
p = list["3 city"];
^

我能理解数组下标是int还是char,但是 std::map 是如何处理 char*/strings 的呢?

最佳答案

如果您的 list 也是一个指针,您就不能像以前那样使用 [] 运算符。这是因为 list["3 city"] 等同于 list.operator[]("3 city")。如果您提供指针,则必须使用 list->operator[]("3 city") 或 - 更具可读性 - (*list)["3 city"] 。当然你也可以把你的列表作为引用,正常使用:

auto& listRef = *list;
p = listRef["3 city"];

关于c++ - operator[] 重载以接受 char * 作为下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31026548/

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