[英]Iterate a variable within a class each time a new object is created
大家好,我试图让类在每次再次实例化该类时都对变量进行迭代。
例如:
我的头文件如下
class IterateTest{
public:
//Default Constructor
IterateTest();
private:
int m_ID; //Specific ID
};
说我正在创建实例是这样的:
vector<IterateTest*> iterations;
for ( int i = 0; i < 10; i++ )
iterations.push_back( new IterateTest() );
我想最终在创建新的IterateTest增量时使ID递增1。 最终以我的向量中的ID为1,2,3,4,等等...
我不确定如何做到这一点。 我不能更改构建矢量的方式,我只需要从IterateTest类中处理它即可。
我真的不知道从哪里开始,因此到目前为止还没有尝试过很多方法。 我已经搜索了一段时间,无论我只是不知道要用谷歌找到它还是它不存在,我都找不到解决方案。
谢谢大家帮助!
由于static
变量在类的所有实例之间共享,因此您可以创建在构造函数中递增的static
变量:
class A
{
private:
int _id;
static int CurrentID;
public:
A() : _id( ++CurrentID ) {}
int getID() const { return _id; }
};
int A::CurrentID = 0;
int main() {
std::vector<A*> vec;
for( int i = 0; i < 5; ++i )
vec.push_back( new A() );
for( auto a : vec )
std::cout << a->getID() << std::endl;
return 0;
}
有几件事要注意:
如何将IterateTest
固定为
class IterateTest{
public:
//Default Constructor
IterateTest(int id): m_ID(id) {};
private:
int m_ID; //Specific ID
};
然后写
vector<IterateTest*> iterations;
for ( int i = 0; i < 10; i++ )
iterations.push_back( new IterateTest(i+1) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.