1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

how can i access i private data member in main

Discussion in 'C' started by vaughn, Jul 26, 2008.

  1. vaughn

    vaughn New Member

    Joined:
    Jul 26, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    can you give me the syntax. thanks
     
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,283
    Likes Received:
    364
    Trophy Points:
    83
    As far as I know you cannot access the private data??
     
  3. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    Three ways, two legal one not. 1. Call the accessor function; 2. Make main a friend of the class and access the member directly. 3. Work out the address of the member and access its memory directly.
    Code:
    class PrivTestCls
    {
    private:
    	int a;
    	int b;
    	int c;
    
    public:
    	PrivTestCls(int _a,int _b,int _c) { a=_a; b=_b; c=_c; }
    	int get_a() { return a; }
    	friend void privtest();
    };
    
    void privtest()
    {
    	PrivTestCls x(1,2,3);
    	printf("a=%d\n",x.get_a()); // we can do this without being a friend
    	printf("b=%d\n",x.b); // we can do this because we're a friend
    
    	// this defeats private but the syntax makes it pretty obvious that's what's happening
    	int *ptr2=(int*)&x;
    	printf("c=%d\n",ptr2[2]);
    }
    
    In reality if your application design requires you to access c then you must create an accessor function or make the accessing function a friend. But if the class design prevents it then you will have to negotiate with the class designer; perhaps he can suggest an alternative design that doesn't require you to access the private data.
     
  4. faizulhaque

    faizulhaque New Member

    Joined:
    May 23, 2008
    Messages:
    213
    Likes Received:
    3
    Trophy Points:
    0
    Occupation:
    Student
    Location:
    Karachi
    Home Page:

Share This Page