2015-04-06 45 views
1

我有一個問題,創造一些方法來遍歷或自定義對象的數組甚至訪問元素D.循環訪問自定義對象的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語言。我不知道該怎麼做。我將如何去重載[]運算符?

回答

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

所以返回的特定行?如果我想每次返回一行,該怎麼辦? – StillLearningToCode 2015-04-06 01:19:46

+0

您是否也可以在類定義中只轉發數組中帶有別名此語句的索引運算符? – Ryan 2015-04-06 16:06:51