c++ - 有没有办法从更简洁的东西中获得 (*pointer)[ index ] 功能?

标签 c++ arrays pointers smart-pointers subscript-operator

我有一个类来表示一维光谱。底层数据类型是一个简单的 float 组。为了操作频谱的元素,我重载了下标运算符,如下所示:

class OneDSpectrum
{
public:
    ...
    float& operator[](int index);
    const float& operator[](int index) const;
    ...
private:
    int numChannels;
    float* histogram;
    ...
}

不幸的是,这个类的几乎所有用途都是作为指针,所以我现在要处理有点烦人的 (*pointerToSpectrum)[ index ] 符号。

我最初有两个想法:

我的第一个想法是重载 OneDSpectrum* 的下标运算符,但这看起来就像一个装满潜在问题和麻烦的篮子。

我的第二个想法是为 OneDSpectrums 制作某种自定义智能指针。

所以我的问题是:通过 SmartPointerToSpectrum[ index ] 获得 (*pointerToSpectrum)[ index ] 功能是否合理?或者我应该只使用大量的 (*pointerToSpectrum)[ index ]

最佳答案

Unfortunately, almost all uses of this class are as pointers

您是否考虑过使用引用?

void foo(OneDSpectrum* a, OneDSpectrum& b)
{
    (*a)[0] = 42;
    b[0] = 97;
}

int main()
{
    OneDSpectrum x;
    OneDSpectrum y;
    foo(&x, y);
}

关于c++ - 有没有办法从更简洁的东西中获得 (*pointer)[ index ] 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211789/

相关文章:

C++ 标准 : can relaxed atomic stores be lifted above a mutex lock?

c++ - OpenGL:用几个可移动的灯更新阴影

c - 共享内存和指针

c++ - 我应该存储整个对象还是指向容器中对象的指针?

c++ - 从 std::vector 的每个元素中减去一个值

arrays - Kotlin - 为自定义类对象初始化一个数组

c - 解析十六进制文件并将其拆分为 6 位整数

c# - 反序列化 Json C# 检查是否列表

c++ - 有没有办法禁止 C++ 中的指针比较?

c++ - 在 Linux 上从 UART 进行阻塞 read()