迭代 D 中的自定义对象数组
iterating over an array of custom objects in 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。我不确定该怎么做。我将如何重载 [] 运算符?
通过重载索引运算符。
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);
}
我在创建某种方法来迭代甚至访问 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。我不确定该怎么做。我将如何重载 [] 运算符?
通过重载索引运算符。
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);
}