c++ - 如何在不创建 "friend"的情况下访问类外的私有(private)数据成员?

标签 c++ class private encapsulation data-members

我有一个 class A,如下所述:-

class A{
     int iData;
};

我既不想创建成员函数,也不想继承上面的class A,也不想改变iData的说明符。

我的疑惑:-

  • 如何访问一个对象的 iData,比如 obj1,它是 class A 的一个实例?
  • 如何改变或操作对象obj1iData

注意:不要使用friend

最佳答案

这是一种方法,但不推荐

class Weak {
private:
    string name;

public:
    void setName(const string& name) {
        this->name = name;
    }

    string getName()const {
        return this->name;
    }

};

struct Hacker {
    string name;
};

int main(int argc, char** argv) {

    Weak w;
    w.setName("Jon");
    cout << w.getName() << endl;
    Hacker *hackit = reinterpret_cast<Hacker *>(&w);
    hackit->name = "Jack";
    cout << w.getName() << endl;

}

关于c++ - 如何在不创建 "friend"的情况下访问类外的私有(private)数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6717163/

相关文章:

c# - {get; 和有什么不一样?设置;},{获取;私有(private)集;} 和{get;}?

不使用 vector 的c++动态类

python - Python中私有(private)和 protected 方法的继承

c++ - 具有共享指针和受限构造函数的工厂方法的问题

c++ - 如何处理初始化类的大量属性?

java - 创建一个类来存储在 ArrayList 中创建的所有对象?

Java - 私有(private)内部类的对象作为外部类构造函数的参数

c++ - 如何使这个颜色百分比函数更快? C++

c++ - 按平台划分的 CMake 输出目录

javascript - 在 Javascript 中从类函数调用类函数