我的班上有一个简单的方法可以设置ID
void Instructor::setInstrID(const int newInstrID)
{
instrID = newInstrID;
}
我希望代替手动设置id,而是制定一种方法,使Instructor的第一个实例自动获取ID 0,而在初始化第二个实例时,它应该自动具有Id = 1
,依此类推。现在,我不确定如何执行此操作。
这应该在方法范围内吗?还是应该在我的main()
函数中?如何检查是否存在任何现有实例?我曾想过制作一个矢量,但是那会在main()
中,我真的不想这么做。有线索吗?
一种简单的解决方案是添加一个static
成员,该成员计算已存在的实例数。
class foo
{
private:
// Next ID to assign
static unsigned int counter;
// This instance's ID
unsigned int instrID = counter++;
};
unsigned int foo::counter = 0;
如果创建的实例数超出unsigned int
的代表数量,可能会遇到问题。只要实例被破坏的顺序几乎相同,就可以了。
如果要使用线程安全替代方法,则可以使用std::atomic<unsigned int>
。