我有這個類:如何創建一個初始化函數,只有在C++中讀取一次
class A : public B
,我需要補充一些受保護的領域:_field,在A和我不能觸摸/變化B. 現在,除了構造函數之外,B和A中的所有函數都是虛擬的。顯然,_field不屬於B類的一部分。
我需要初始化_field。我該怎麼做,如果唯一的構造函數是B的? 此外,這樣的事情:
unsigned long _field = 0;
給我一個錯誤的編譯。
我解決這個問題的:
class A : public B
{
protected:
unsigned long _field;
public:
void fooFunction(){
....do other stuff....
static bool isInitField = false;
if (!isInitField){
_field = 0;
isInitField = true;
}
...rest of the function...
}
有沒有更好的方式來做到這一點,而不使用靜態的?
感謝, 或者
爲什麼不使用A的構造函數? –
既然從B繼承了A? – inf