Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 使用静态成员变量计算创建的对象数_Oop_Static_D - Fatal编程技术网

Oop 使用静态成员变量计算创建的对象数

Oop 使用静态成员变量计算创建的对象数,oop,static,d,Oop,Static,D,我试图创建一个对象的动态数组,使用一个静态变量作为指向下一个可用数组索引的指针。我相信有更好的方法来做到这一点 类存储动态数组: import std.stdio; import DataRow; class Database{ public: this(){ /* intentionally left blank */} void addRow(DataRow input){ this.db[count] = input; writeln

我试图创建一个对象的动态数组,使用一个静态变量作为指向下一个可用数组索引的指针。我相信有更好的方法来做到这一点

类存储动态数组:

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数组可以附加
~=
操作符,并跟踪它们自己的
长度。您不需要自己记录长度:

void addRow(DataRow input){
    this.db ~= input;
    writeln(db.length); // number of rows in db
}
根据你的例子,我不确定这是否是你想要的。每个
数据库
实例都有自己的成员
db
,但所有实例都将共享相同的
count
变量,因为您将其声明为
静态

除非您有充分的理由保留一个静态计数器(它将跟踪在
数据库的所有实例中添加的行数),否则我将仅依靠每个数组跟踪其自身的长度。

只有一个db对象,就像一个单例一样。但是,就像你说的,我走错了方向。