0

I've got a problem understanding inheritance.

#include <iostream.h>
class A
{
    public:
    int x;
};

class S1: public A
{
    public:
    int x;
};

class S2: public S1
{
    public:
    int x;
};

int main()
{
    S2 obj;
    cout << obj.x;
    return 0;
}

In the code above, I basically want to use all the x's. but, obj.x will only allow me to use the x of class S2. How can I use the x of S1 and A (i) inside the class (ii) outside the class using an object of S2.

Also, while using static variables, how do we initialize them outside the class?

Is it like this?

class A
{
    public:
    static int x;
};

A::x = 10;
3
Contributors
3
Replies
22
Views
3 Years
Discussion Span
Last Post by Ancient Dragon
Featured Replies
  • Here is how to refer to members of specific classes int main() { S2 obj; obj.A::x = 123; std::cout << obj.A::x; return 0; } Read More

0

obj.x will only allow me to use the x of class S2

I think its because you created the oject of class S2, it seems like variables are overriding here...you cant refer the variables of the base class without their ojectes

2

Here is how to refer to members of specific classes

int main()
{
    S2 obj;
    obj.A::x = 123;
    std::cout << obj.A::x;
    return 0;
}
Comments
Thanks. THat's what I needed! :D
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.