Struct S
{int a,b,c};
class A{
S myArray[MAX]
void fillArrayFromFile();
};
class B{
void printStyle1();
void printStyle2();
void printSTyle3();
};
class C{
void printStyle4();
void printStyle5();
void printSTyle6();
};
所以给出了一点假装代码......
我希望类B和C能够从A类中的数组中读取信息而无法更改数据。
访问器函数将非常麻烦,因为我必须为每种不同的输出格式编写函数,或者创建一个临时结构来保存数据并将其传递给调用类,以便它可以。这似乎不是最佳解决方案。
友方函数可以访问类的成员,但不能访问我需要访问的实例(除非我误解了朋友的功能......)
使数组公开将允许除我希望访问/操纵数据的两个类以外的类。
答案 0 :(得分:2)
如果要允许客户端检查数组内容,可以使用A
中的单个成员函数执行此操作。
class A
{
S myArray[MAX]
void fillArrayFromFile();
public:
const S* getArrayPointer() const { return &myArray; }
};
这与允许它们直接只读访问具有相同的效果。
答案 1 :(得分:2)
向A添加一个访问函数,它返回一个const指针或对数组的引用,或者返回给S中的指定元素。
const S* getArray() const { return myArray; }
const S& getElement(size_t ele) const { return myArray[ele]; }