2011-12-20 9 views

答えて

8

はい、インデックス演算子のオーバーロードもある一時オブジェクト(構造体はDの場合に最適です)を返すC++の方法があります。

はしかし、Dで良いアイデアが構文m[i, j]のために行くことです:あなたはまだm[i][j]を使用したい場合は、ネストされた構造体はあなたにいくつかの構文上の余裕を与える

struct S 
{ 
    uint opIndex(uint i, uint j) 
    { 
     return i + j; 
    } 
} 

void main() 
{ 
    S s; 
    assert(s[2, 3] == 5); 
} 

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

笑、いいよ!私は 'opIndex(uint i、uint j){return opIndex(...);}を実行していました。 } 'は動作しませんでした。ありがとう。 – Arlen