我是一個間歇性程序員,最近似乎忘記了很多基礎知識。函數返回指向常量2-d數組的指針(C++)
我創建了一個類SimPars
來保存幾個二維數組;下面顯示的是demPMFs
。我要將一個指向SimPars
實例的指針傳遞給其他類,並且我希望這些類能夠使用SimPars
訪問器函數讀取數組。速度和記憶很重要。
我知道生活對於向量來說往往更簡單,但在這種情況下,我真的很想堅持陣列。
如何爲數組寫入存取器函數?如果我對第n個數組索引感興趣,我將如何使用返回的指針訪問它? (我應該爲數組的一個特定的索引編寫一個單獨的訪問器函數嗎?)下面的內容肯定是錯誤的。
// SimPars.h
#ifndef SIMPARS_H
#define SIMPARS_H
#include "Parameters.h" // includes array size information
class SimPars {
public:
SimPars(void);
~SimPars(void);
const double [][ INIT_NUM_AGE_CATS ] get_demPMFs() const;
private:
double demPMFs[ NUM_SOCIODEM_FILES ][ INIT_NUM_AGE_CATS ];
};
#endif
// SimPars.cpp
SimPars::SimPars() {
demPMFs[ NUM_SOCIODEM_FILES ][ INIT_NUM_AGE_CATS ];
// ...code snipped--demPMFs gets initialized...
}
//...destructor snipped
const double [][ INIT_NUM_AGE_CATS ] SimPars::get_demPMFs(void) const {
return demPMFs;
}
我會非常感謝某些解釋與建議的解決方案。
我很確定成員聲明'double demPMFs [] [INIT_NUM_AGE_CATS];'是非法的。這實際上是編譯? – fredoverflow 2010-06-24 18:46:15
感謝您的支持。修正了錯字。我有原始代碼的大小。 – Sarah 2010-06-24 18:49:05
您能否詳細說明您實際嘗試實現的目標?考慮一個2維數組作爲指針:'demPMFs **'的數組,那麼你不需要像在const const [] [INIT_NUM_AGE_CATS] get_demPMFs()const;'中那樣在返回類型中指定任何大小......「 – nus 2010-06-24 18:51:04