C++ 如何在c++;

C++ 如何在c++;,c++,arrays,class,C++,Arrays,Class,所以考虑到那一点伪装代码 我希望类B和C能够从类A中的数组中读取信息,而不需要更改数据 访问器函数将非常麻烦,因为我必须为每种不同的输出格式编写一个函数,或者创建一个临时结构来保存数据并将其传递给调用类,这样它就可以。这似乎不是最好的解决方案 friend函数可以访问类的成员,但不是我需要访问的实例(除非我误解了friend函数…) 将数组公开将允许除我希望访问的两个类之外的其他类访问/操作数据。如果您想让客户端能够检查数组的内容,可以使用a中的单个成员函数来执行此操作 Struct S {in

所以考虑到那一点伪装代码

我希望类B和C能够从类A中的数组中读取信息,而不需要更改数据

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

friend函数可以访问类的成员,但不是我需要访问的实例(除非我误解了friend函数…)


将数组公开将允许除我希望访问的两个类之外的其他类访问/操作数据。

如果您想让客户端能够检查数组的内容,可以使用
a
中的单个成员函数来执行此操作

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();
};

这与允许客户端直接只读访问具有相同的效果。

如果您想让客户端能够检查数组的内容,可以使用
a
中的单个成员函数来完成

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();
};

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

将访问函数添加到返回常量指针或对数组的引用,或返回到S中的指定元素

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

将访问函数添加到,该函数将返回对数组或S中指定元素的常量指针或引用

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

好友类可以访问您的数据成员和方法。好友类可以访问您的数据成员和方法。但仍然容易受到
常量的攻击。(但我不认为没有复制就可以阻止这一切)@phoeagon
const_cast
在这里无关紧要。你不能阻止别人使用它。@captain很明显格式对我来说没有意义。。。我看到一个S指针的返回,但是const在{}之外做了什么呢?函数声明外面的
const
使得它在被调用时不能修改任何成员变量。这是常量正确性的一部分。如果类型是指针或引用,它还要求函数通过
const
返回。我认为第一个const就是这样做的,在s*之前的一个,或者只是说s*不能更改?仍然容易受到
const
强制转换的影响。(但我不认为没有复制就可以阻止这一切)@phoeagon
const_cast
在这里无关紧要。你不能阻止别人使用它。@captain很明显格式对我来说没有意义。。。我看到一个S指针的返回,但是const在{}之外做了什么呢?函数声明外面的
const
使得它在被调用时不能修改任何成员变量。这是常量正确性的一部分。如果类型是指针或引用,它还要求函数通过
const
返回。我认为第一个const就是这样做的,在s*之前的一个,还是说s*不能更改?