I have a base class A and 2 derived classes A1 and A2. There is another class X and I created 2 objects obj_x1, obj_x2 from this class X. I want to use derived class A1 in obj_x1 and derived class A2 in obj_x2.
How can i declare this class A object in class X so that i can use corresponding derived class objects in obj_x1 and obj_x2 instances?
class A {
public:
virtual void print() {
printf("I AM A\n");
};
};
class A1 : public A {
public:
void print();
};
class A2 : public A {
public:
void print();
};
void
A1::print
()
{
printf("I AM A1\n");
}
void
A2::print
()
{
printf("I AM A2\n");
}
class X
{
// problem:I want A to be A1 for obj_x1 and A2 for obj_x2 instance
A a;
public:
void which_a();
};
void
X::which_a() {
a.print();
}
int main() {
X obj_x1;
X obj_x2;
obj_x1.which_a(); // I want member a in obj_X1 to be class A1
obj_x2.which_a(); // I want member a in obj_X2 to be class A2
}