Jja*_*ang 9 c++ static counter class
我正在尝试创建一个Data
类,其对象每个都拥有唯一的ID.
我希望第一个对象的ID为1,第二个为2,等等.我必须使用a static int
,但所有对象都具有相同的ID,而不是1,2,3 ......
这是Data
班级:
class Data
{
private:
static int ID;
public:
Data(){
ID++;
}
};
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,所以第一个ID将是1,第二个将是2,等等.?
Luc*_*ore 18
这个:
class Data
{
private:
static int ID;
const int currentID;
public:
Data() : currentID(ID++){
}
};
Run Code Online (Sandbox Code Playgroud)
除静态计数器外,还需要一个实例绑定成员.
如果ID是静态的,那么它将具有所有类实例的相同值.
如果您希望每个实例都具有顺序ID值,那么您可以将静态属性与类变量组合,如下所示:
class Data
{
private:
static int ID;
int thisId;
public:
Data(){
thisId = ++ID;
}
};
int Data::ID = 0;
Run Code Online (Sandbox Code Playgroud)
如果应用程序是多线程的,那么你必须将它与pthread互斥锁等同步.