c++重载两个中括号[][],就像二维数组一样使用
直接重在不行,得怎么弄?
使用指向指针的指针。
struct cpp
{
int * * p;
/*/其他代码.../*/
int * opt[](int n)
{
rtn p[n];
}
};
如果是其他类型,你可以把int换成其他类型。
也可以打造成模板。
可以使用嵌套类,例如:
#include <cstdio>
#define MAXN 100
struct A
{
struct B
{
int val[MAXN];
int& operator [] (const int p)
{
return val[p];
}
} val[MAXN];
B& operator [] (const int p)
{
return val[p];
}
};
int main()
{
static A x;
x[1][2] = 9;
printf("%d\n", x[1][2]);
}