使用静态成员变量来计算创建的对象数
Using a static member variable to count number of objects created
我正在尝试创建一个动态对象数组,使用静态变量作为指向下一个可用数组索引的指针。我相信有更好的方法来做到这一点...
class 存储动态数组:
import std.stdio;
import DataRow;
class Database{
public:
this(){ /* intentionally left blank */}
void addRow(DataRow input){
this.db[count] = input;
writeln(count);
count++;
}
private:
static uint count;
DataRow[] db;
}
D 数组可以用 ~=
运算符追加,并跟踪它们自己的 length
。您不需要自己记录长度:
void addRow(DataRow input){
this.db ~= input;
writeln(db.length); // number of rows in db
}
根据您的示例,我不确定这是否符合您的预期。每个 Database
实例都有自己的成员 db
,但所有实例都将共享相同的 count
变量,因为您将其声明为 static
。
除非你有充分的理由保留一个静态计数器(它将跟踪在 Database
的 all 个实例中添加的行数),否则我只会依靠每个数组来跟踪它自己的长度。
我正在尝试创建一个动态对象数组,使用静态变量作为指向下一个可用数组索引的指针。我相信有更好的方法来做到这一点...
class 存储动态数组:
import std.stdio;
import DataRow;
class Database{
public:
this(){ /* intentionally left blank */}
void addRow(DataRow input){
this.db[count] = input;
writeln(count);
count++;
}
private:
static uint count;
DataRow[] db;
}
D 数组可以用 ~=
运算符追加,并跟踪它们自己的 length
。您不需要自己记录长度:
void addRow(DataRow input){
this.db ~= input;
writeln(db.length); // number of rows in db
}
根据您的示例,我不确定这是否符合您的预期。每个 Database
实例都有自己的成员 db
,但所有实例都将共享相同的 count
变量,因为您将其声明为 static
。
除非你有充分的理由保留一个静态计数器(它将跟踪在 Database
的 all 个实例中添加的行数),否则我只会依靠每个数组来跟踪它自己的长度。