我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 ++中不允许这样做。还有其他想法吗?
答案 0 :(得分:4)
没有骰子。您不能重载“指向对象”方法的指针,因为指针不是运算符过载的对象。