2013-04-22 38 views
1
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(); 
}; 

所以给出的假装代码有点...如何访问私有阵列中的类C++

我想B级和C可以不受读取来自于A级的阵列信息能够改变数据。

存取函数是非常麻烦的,因为我会写一个函数为每个不同的输出格式或者创建一个临时结构来保存数据,并把它传递给调用类,因此它可以。这似乎不是最好的解决方案。

友元函数将使访问类的成员,但不是我需要的情况下(除非我误解友元函数...)

使得阵列公众会允许比其他类我希望能够访问/操作数据。

+2

朋友类可以访问自己的数据成员以及方法。 – phoeagon 2013-04-22 02:34:54

回答

2

如果要允许客户端来检查你可以用一个成员函数A做到这一点的数组的内容的能力。

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

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

+0

虽然仍然容易受到'const <*>'的影响。 (不过,我觉得没有什么可以阻止这种不进行复制) – phoeagon 2013-04-22 02:36:01

+0

@phoeagon'const_cast'在这里无关紧要。你无法阻止某人使用它。 – 2013-04-22 02:48:56

+0

@CaptainObvlious格式化没有任何意义,我...我看到一个S指针的回报,但什么是常量做的{}之外的定义是什么? – 2013-04-22 02:51:09

2

添加的接入功能的返回一个const指针或引用到阵列,或到指定的元件在S.

const S* getArray() const { return myArray; } 
const S& getElement(size_t ele) const { return myArray[ele]; }