C++ 通过成员函数参数返回成员数组的值
通常对数组类型进行保护做法是这样的。
class A {
public :
A {}
~ A {}
enum {
MAX_VAL_COUNT = 10;
};
void getArraryValues(int (* pVal)[MAX_VAL_COUNT]) { memcpy(pVal,m_aVal,MAX_VAL_COUNT); }
或
void getArraryValues(int (& eVal)[MAX_VAL_COUNT]) { memcpy(&eVal,m_aVal,MAX_VAL_COUNT); }
或
void getArraryValues(const int* & eVal)) { eval = static_cast<int *>(m_aVal); }
private :
int m_aVal[MAX_VAL_COUNT]
}
上面的代码对类型加了强的限定,这样可以防止用户传入数组长度不够长,或防止类用户误修改私有成员内容
(当然这里类用户还是可以通过显式类型转换修改类私有成员)。
尽管如此,在C++中还是最好使用vector代替数组
#include <vector>
using namespace std;
class A {
public :
A {}
~ A {}
enum {
MAX_VAL_COUNT = 10;
};
void getArraryValues(vector& vVal) { vVal = m_vVal }
private :
vector<int> m_vVal[MAX_VAL_COUNT]
}