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

时间:2012-02-22 00:40:18

标签: c++ arrays operator-overloading

我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 ++中不允许这样做。还有其他想法吗?

1 个答案:

答案 0 :(得分:4)

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