迭代D中的自定义对象数组

时间:2015-04-06 01:02:10

标签: arrays operator-overloading d arrayiterator

我在创建一些方法来迭代甚至访问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.我不确定该怎么做。我将如何重载[]运算符?

1 个答案:

答案 0 :(得分: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);
}