gpt4 book ai didi

c++ - 覆盖类型数组的下标/运算符[]

转载 作者:行者123 更新时间:2023-11-30 02:05:47 25 4
gpt4 key购买 nike

我 99% 确定这个问题的答案是“没有骰子”,但无论如何我都会尝试...

我正在尝试覆盖 operator[]

我知道如何为给定类型的调用覆盖它:

struct Huh {
int x;
int operator[](float idx) { return -1; }
};

Huh h;
cout << h[123.4f] << end; // works, spits out -1

但是如果我想改变我为这些类型的数组下标的方式怎么办:

Huh h[10];
Huh h2 = h[123.4f]; // invalid!!

看来这是一个不可更改的 C++ 行为。也就是说,类型“Huh[10]”(或任何数组类型)的 operator[] 是禁止使用的。

或者,是否有一些方法可以为数组类型定义 operator[]

我尝试使 operator[] 成为一个自由函数,结果发现这在 C++ 中是不允许的。还有其他想法吗?

最佳答案

没有骰子。您不能重载“指向对象的指针”的方法,因为指针不是具有要重载的运算符的对象。

关于c++ - 覆盖类型数组的下标/运算符[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387575/

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