1

D でカスタム オブジェクトの配列内の要素を反復処理したり、要素にアクセスしたりする方法を作成する際に問題が発生しています。

次の方法で配列を作成しました。

class Database{

public:
    this(){ /* STUBB */}

    void addRow(DataRow input){ this.db ~= input; }

private:
    static uint count;
    DataRow[] db;
}

しかし、次の方法で配列内の個々の要素にアクセスしようとすると:

string x = db[1].getCountryName();

エラーが発生します:

Error: no [] operator overload for type Database.Database

C/C++ でコーディングを行うのは本当に久しぶりで、これが D での初めての試みです。何をすべきか正確にはわかりません。[] 演算子をオーバーロードするにはどうすればよいですか?

4

1 に答える 1

3

インデックス演算子をオーバーロードする。

http://dlang.org/operatoroverloading.html#array

例えば:

struct A
{
    int opIndex(size_t i1, size_t i2, size_t i3);
}

void test()
{
    A a;
    int i;
    i = a[5,6,7];  // same as i = a.opIndex(5,6,7);
}
于 2015-04-06T01:07:13.543 に答える