Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   How to change the Private access specifier to Public in Derived Class (http://www.go4expert.com/forums/change-private-access-specifier-public-t23387/)

singhsan02 22Sep2010 16:26

How to change the Private access specifier to Public in Derived Class
 
Hi,
Suppose I have a base class with an Integer Variable as defined below.
Class Base{
public:
int a;
};

Now I derive privately a derived Class as
Class Derived : private Base{
};

Now int a will become Private in base class.

My question is how can I again change the access specifier of int a to Public in the derived class?

Thanks,
Sanjay

shabbir 22Sep2010 23:12

Re: How to change the Private access specifier to Public in Derived Class
 
Code:

Class Derived : public Base{
should do it.

But why do you want to have members as public?

singhsan02 23Sep2010 11:11

Re: How to change the Private access specifier to Public in Derived Class
 
Quote:

Originally Posted by shabbir (Post 73033)
Code:

Class Derived : public Base{
should do it.

But why do you want to have members as public?

Hi,
I guess I was not clear what I want to achieve in my question earlier.

See using Private Inheritance I inherited integer a in to derived class.
Now the access specifier of int a in derived is Private.I again want to change the access specifier of int a in to say either public or protected in the derived class.
So the crux is How can I change the access specifier in a class from one type to another?

~Sanj

shabbir 23Sep2010 13:28

Re: How to change the Private access specifier to Public in Derived Class
 
Now why do you want to be changing the access level of a variable in the middle of your running program?

singhsan02 23Sep2010 16:18

Re: How to change the Private access specifier to Public in Derived Class
 
Right now I don't have a scenario for why I will need it.

Just wanted to know whether conceptually is it possible or not?

~sanj

shabbir 24Sep2010 09:15

Re: How to change the Private access specifier to Public in Derived Class
 
No it is not possible.

singhsan02 24Sep2010 10:45

Re: How to change the Private access specifier to Public in Derived Class
 
Quote:

Originally Posted by shabbir (Post 73071)
No it is not possible.

Ok..Actually this was asked recently to me in an interview and I believe there is some trick to achieve this behaviour. I searched a lot for this but coudn't get anything.

Anyways.....

shabbir 24Sep2010 11:17

Re: How to change the Private access specifier to Public in Derived Class
 
No there is no way as far as I know this can be done.

xpi0t0s 2Oct2010 12:59

Re: How to change the Private access specifier to Public in Derived Class
 
You should not do it, because if the program design requires that Derived is derived from a private Base then the intent of the design is that Base's members should be private within Derived, so if you need to circumvent that, then your design is broken. If you need Derived::a to be public then (a) derive it as public not private, or (b) add a public accessor function.

Code:

class Derived : private Base
{
public:
  int *get_a() { return &a; }
}


scottu 15Dec2010 00:06

Re: How to change the Private access specifier to Public in Derived Class
 
Code:

class Derived : private Base {
  public:
    Base::a;
};

should do the trick.


All times are GMT +5.5. The time now is 17:46.