[英]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.