如何在类的内部访问类的私有数据成员?

在类的内部访问类的私有数据成员的方法;
在类的外部访问类的私有数据成员的方法;
一个普通函数访问一个类的私有数据成员的两种方法?

是的,给你举例

在主窗口类中创建公有成员函数,通过在类中获取私有成员来供其他类对其进行访问及修改:

class A{
 
public:
    int* getNum(){
        return #    
    }
    
private:
    int num;
}
 
class B{
 
public:
    void setNum(int num){
        *(a->getNum) = num;
    }
 
private:
    A *a;
}

在主窗口类中将对话框类声明为友元类(friend),当在对话框类中声明主窗口类对象后,即可直接访问该对象的所有成员(包括私有成员):


class A{
 
public:
    friend class B;
    
private:
    int num;
}
 
class B{
 
public:
    void setNum(int num){
        a->num = num;
    }
 
private:
    A *a;
}

内部通过Set函数,外部通过指针

class Test
{
public:
    void SetA(int _a)//接口(可以从类外设置a的值)
    {
        a = _a;
    }
    void Print()
    {
        cout << a << endl;
        cout << b << endl;
        cout << endl;
    }
private:
    int a = 10;
    int b = 100;
};

int main()
{
    Test s;
    s.Print();

    s.SetA(0);//通过接口把a设置为0;
    s.Print();

    Test* ps = &s;
    int * ps1 = ((int *)ps + 1);
    *ps1 = 0;//通过指针把b设置为0;
    s.Print();
        
    system("pause");
    return 0;
}

外部

#include <iostream>
using namespace std;
 
class A
{
public:
    A(int i = 0)
        :m_i(i)
    {}
    void print()
    {
        cout << "m_i" << this->m_i << endl;
    }
private:
    int m_i;
};
 
int main(int argc, char **argv)
{
    A a(10);
    // 初始化后的a的私有变量是10
    a.print();
 
    //可以通过指针访问a中的m_i变量
    int *pi = (int *)&a;
    cout << "a::m_i: " << *pi << endl;
 
    //通过指针更改m_i
    *pi = 11;
    //我们看到对象a中的私有变量m_i已经被改变
    a.print();
    return 0;
}

如果是其他类,还可以通过友元函数