Sí, puede hacer la forma C++ de devolver un objeto temporal (la estructura es mejor en el caso de D') que también tiene una sobrecarga de operador de índice.
Pero una mejor idea de D es ir para la sintaxis m[i, j]
:
struct S
{
uint opIndex(uint i, uint j)
{
return i + j;
}
}
void main()
{
S s;
assert(s[2, 3] == 5);
}
Si aún desea utilizar m[i][j]
, una estructura anidada le da un margen de maniobra sintáctica:
struct S
{
auto opIndex(uint i)
{
struct Temp
{
uint opIndex(uint j)
{
return i + j;
}
}
return Temp();
}
}
void main()
{
S s;
assert(s[2][3] == 5);
}
jeje, ¡bonito! Estaba haciendo 'opIndex (uint i, uint j) {return opIndex (...); } 'que no estaba funcionando. Gracias. – Arlen