我是一个间歇性程序员,最近似乎忘记了很多基础知识。函数返回指向常量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