2011-12-20 14 views

Respuesta

8

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); 
} 
+0

jeje, ¡bonito! Estaba haciendo 'opIndex (uint i, uint j) {return opIndex (...); } 'que no estaba funcionando. Gracias. – Arlen

Cuestiones relacionadas