Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
August 30, 2016
arrowPress Releases
August 30, 2016
PR Newswire
View All






If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 
Accessing privates without 'friend'(c++)
by Ofer Rubinstein on 01/05/10 04:14:00 pm   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutraís community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

[ From Pompi Dev Blog ]†

Here is a neat little way I found to make one class access the privates of another class, without using friend or direct inheritance. Take a look at this code:

class A {
    public:
        class Observer {
             protected:
                 int GetPrivate(A & a) {return a.ValueA;};
        };
    private:
        int ValueA;
};
class B: public A::Observer {
    public:
        void Foo (A & a) {
             Do something with GetPrivate(a);
        }
};

Class B cannot access the privates of class A directly, but it inherits a subclass of A that can access the privates of A given as a parameter. Since I have just†tried†this "pattern" recently, I am not sure what is the direct benefit of this.

I believe a benefit can be in the sense of making a programmer's life easier. Programming languages play several parts. They provide us powerful functionality, but they also suppose to give us ease of use. You can program anything on assembly, but it would be really difficult to write a big game in assembly. If you do not expose privates via a getter, you give the programmer one less method to think about when he need to use the class's instance for something.

Can you think how you would use this "pattern"? Do you think there is no use for it? Tell me what you think.


Related Jobs

Koolhaus Games Inc.
Koolhaus Games Inc. — Vancouver, British Columbia, Canada
[08.29.16]

Software Engineer
Industrial Light & Magic
Industrial Light & Magic — San Francisco, California, United States
[08.29.16]

ILMxLAB Game Engine Programmer
Cryptic Studios
Cryptic Studios — Los Gatos, California, United States
[08.29.16]

Software Engineer (All Levels)
University of Brighton
University of Brighton — Brighton, England, United Kingdom
[08.29.16]

Lecturer/Senior Lecturer in Games Development 0.5 fte





Loading Comments

loader image