【发布时间】:2010-06-24 18:39:51
【问题描述】:
我是一名间歇性程序员,最近似乎忘记了很多基础知识。
我创建了一个类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 ];的成员声明是非法的。这真的可以编译吗? -
感谢您的关注。修正了错字。我在原始代码中有大小。
-
您能否详细说明您实际想要实现的目标?将二维数组视为指向指针的数组:
demPMFs**,那么您不需要在返回类型中指定任何大小,如const double [][ INIT_NUM_AGE_CATS ] get_demPMFs() const;... -
我希望其他接收指向 SimPars 实例的指针的类能够读取 demPMF。我认为这可以通过让 SimPars get 函数返回一个指向数组的指针来实现。