【问题标题】:iterating over an array of custom objects in D遍历 D 中的自定义对象数组
【发布时间】:2015-06-10 10:10:37
【问题描述】:

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

【问题讨论】:

    标签: arrays operator-overloading d arrayiterator


    【解决方案1】:

    通过重载索引运算符。

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

    【讨论】:

    • 那么返回特定的行?如果我想一次返回每一行怎么办?
    • 您是否也可以在类定义中使用别名 this 语句转发到数组上的索引运算符?
    猜你喜欢
    • 2017-02-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2011-01-01
    • 2017-09-19
    相关资源
    最近更新 更多