給定一個具有各種成員數據值和一個靜態int計數器的C++類,我想有一個clear()
函數可以遍歷所有元素這些類對象的數組清除其數據成員。C++ - 如何使用`this`來訪問類的數組中的成員變量
因此,例如,一類看起來像這樣,擁有一個芯片的版本信息(是的,我知道我可能需要更多的getter和setter方法):
class __STA_version_t
{
public:
__STA_version_t() { count++; };
~__STA_version_t() {};
void setVerString(char* x) { strncpy(verString, x, sizeof(verString)); verString[sizeof(verString)-1] = 0
void clearVerString() { memset(verString, 0x0, sizeof(verString)); }
char* getVerString() { return verString; }
bool hasVersion() { return verString[0]; }
void clear()
{
for (int i = 0; i < count; i++)
{
// what goes here?
}
}
private:
static int count; // how many of these objects exist, need to know for clear().
char verString[20]; // station version as a string
UINT8 major_ver; // major version identifier (3 bits)
UINT8 minor_ver; // minor version identifier (6 bits)
UINT8 revision; // revision identifier (4 bits)
UINT8 chip_ident; // target chip identifier (3 bits)
};
在其他地方初始化count
正是如此:
__STA_version_t::count = 0;
現在,創建有對象的數組:
__STA_version_t versions[10];
首先,只需檢查一下,此實例化後count應該等於10,對不對?
在clear()
功能,我想這樣說:
this[i]->clearVerString();
this[j]->revision = 0;
// etc.
以清除數組的每個元素的每個數據成員。
可以這樣做嗎?怎麼樣?
剛剛使用std :: vector <__ STA_version_t>有什麼問題? – PaulMcKenzie
另外,如果你的代碼不是玩具程序,靜態計數很少會按照你想要的方式工作。在程序運行過程中發生臨時性,複製等事件,而且「計數」成員可能具有您所期望的值。 – PaulMcKenzie
必須查看此。指針?而且,不,它是針對商業用途的。 –