gpt4 book ai didi

c++ - 为非类类型重载 operator[ ]

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:54 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以在 C++ 中为非类类型重载 operator[]。

基本上,有一种数据类型是指针(来自 CoreFoundation 的 CFDictionaryRef)。但它不是一个类(我知道允许为特定类重载 operator[] )。我知道如何访问 CFDictionaryRef 中的每个元素(例如,通过使用 CFDictionaryGetIndex(CFIndex index); )。我想简化它,这样我就不必每次都编写该函数调用。我想为 CFDictionaryRef 重载运算符 [ ]。但由于它不是一个类,据我所知,这是不可能的。

有人有什么建议吗?

最佳答案

你是对的,不可能在非用户定义的类型上重载运算符。

您可能会做的是将指针包装在一个类中,并在类本身上重载运算符。由于您只能在类类型上重载运算符,因此这是唯一的选择。

class CFDictionaryRefWrapper {
public:
CFDictionaryRefWrapper(CFDictionaryRef r) : dref(r) { }

CFDictionaryRef dref;

Type operator[](unsigned int index) {
/* do whatever with dref */
}
};

如果您需要这样做,这还具有能够自动管理指针 (RAII) 生命周期的优势。

关于c++ - 为非类类型重载 operator[ ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576898/

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