How to gain Access to member variables of a class using void pointer but Not Object

后端 未结 6 1185
暖寄归人
暖寄归人 2021-01-24 21:29

I am trying to access member variables of a class without using object. please let me know how to go about.

class TestMem
{
    int a;
    int b;
public:
    Tes         


        
6条回答
  •  遇见更好的自我
    2021-01-24 22:18

    I came up with a solution but it's dirty:

    class TestMem
    {
    public:
        int a;
        int b;
        TestMem(){}
        void TestMem1()
        {
            a = 10;
            b = 20;
        }
    };
    
    void* offset(void* ptr, ...)
    {
      va_list ap;
      va_start(ap, ptr); // get 1st argument's address
    
      long i = va_arg(ap, long); // get next argument
      va_end(ap);
    
      return (char*)ptr + i;
    }
    
    void test()
    {
      TestMem t;
      void* p = (TestMem*)&t;
      t.a = 8;
      t.b = 9;
      printf("%i\n", *(int*)offset(p, &TestMem::a));
      printf("%i\n", *(int*)offset(p, &TestMem::b));
    }
    

提交回复
热议问题