我有一個從框架中的基類派生的C++類。繼承 - 初始化問題
派生類沒有任何數據成員,因爲我需要它可以自由轉換爲基類並返回 - 框架負責加載和保存對象,我無法更改它。我的派生類只具有訪問數據的功能。
但是有幾個地方我需要存儲一些臨時的局部變量來加速訪問基類中的數據。
mydata* MyClass::getData() {
if (!m_mydata) { // set to NULL in the constructor
m_mydata = some_long_and complex_operation_to_get_the_data_in_the_base()
}
return m_mydata;
}
的問題是,如果我只是通過從鑄造框架返回MYCLASS *爲MyClass的構造函數將永遠不會調用和m_mydata是垃圾的基類指針訪問對象。
有沒有辦法只初始化m_mydata指針一次?
雖然這不是更糟嗎?如果您將基類指針強制轉換爲「MyClass *」,那麼如何知道分配的內存中是否有足夠的空間用於新的'm_mydata'成員?除非你分配內存,然後框架填充它 - 在這種情況下,你可以構造你的'MyClass'並將指向基類的指針傳遞給框架。 – 2010-04-17 20:50:18