如何在c ++中访问类中的私有数组

时间:2013-04-22 02:25:47

标签: c++ arrays class

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类中的数组中读取信息而无法更改数据。

访问器函数将非常麻烦,因为我必须为每种不同的输出格式编写函数,或者创建一个临时结构来保存数据并将其传递给调用类,以便它可以。这似乎不是最佳解决方案。

友方函数可以访问类的成员,但不能访问我需要访问的实例(除非我误解了朋友的功能......)

使数组公开将允许除我希望访问/操纵数据的两个类以外的类。

2 个答案:

答案 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]; }