c++ - 读取私有(private)变量类成员

标签 c++ class c++11 private

我是 C++ 的新手,我需要在不同类的方法中读取类的私有(private)类成员,例如:

class a{
private:
int x;

}

class b{
void foo();
}

void b::foo(){
//here I want to read from x that's in a
}

我是否必须在 class a 中设置一个函数,例如 int readx(){return x);)a readclass(){return *这个);?还有别的办法吗?

最佳答案

类的私有(private)部分的目标是“隐藏”您处理数据的方式,提供一种使用公共(public)方法访问所述数据的简化方式。 使用公共(public)方法更改私有(private)成员值的优点是,例如,您可以只允许 'x' 的值介于 0 和 10 之间。

在您的情况下,您应该考虑“x”在您的第一个类中代表什么,以及第二堂课是否可以在没有任何控制或特殊考虑的情况下直接访问它。如果是这种情况,它可能应该是一个公共(public)值。在另一种情况下,您需要创建一个公共(public)方法来读取它,就像您的 readx 示例一样。 如果只有 'b' 有权直接访问 'x',您还可以定义一个友元函数,就像有人已经说过的那样。

请注意,返回一个指向实例的指针将不允许访问该类的私有(private)成员。

关于c++ - 读取私有(private)变量类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565841/

相关文章:

c++ 使用子类 'type cast' 错误

c++ - std::vector 中的数据存储是连续的吗?

c++ - 为什么自建的 g++ 编译器无法编译我的代码

C# 代码设计 : 1 library, 2 个项目使用它(但其中一个是只读的)

c# - 设计模式,帮助找到最佳方法

java - 如何将方法从A类传递到B类

c++ - 模板层次结构构造函数参数

c++ - 关于 C/C++/QT 中的条件构建(宏)

c++ - 你可以将 pimpl-Class 放入 vector 中吗

c++ - 从未知集合中无放回地抽样