2
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 类的数组中读取信息,而不能更改数据。

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

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

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

4

2 回答 2

2

如果您想让客户端能够检查数组的内容,您可以使用A.

class A
{
    S myArray[MAX]
    void fillArrayFromFile();
public:
    const S* getArrayPointer() const { return &myArray; }
};

这与允许他们直接只读访问具有相同的效果。

于 2013-04-22T02:34:16.533 回答
2

向 A 添加一个访问函数,该函数返回一个 const 指针或对数组的引用,或者对 S 中的指定元素。

const S* getArray() const { return myArray; }
const S& getElement(size_t ele) const { return myArray[ele]; }
于 2013-04-22T02:40:51.477 回答