I'm trying to create an array of pointers using polymorphism. I will have the array of the superclass point to multiple subclasses. Is there anyway of doing this and still using a method from the subclass? Here's a sample code:
#include <iostream>
class Test1
{
public:
    Test1()
        : x(1)
    {}
    int get_x()
    {
        return x;
    }
private:
    int x;
};
class Test2 : public Test1
{
public:
    Test2()
        : y(2)
    {}
    void print()
    {
        std::cout << get_x() << ' ' << y << std::endl;
    }
private:
    int y;
};
class Test3 : public Test1
{
public:
    Test3()
        : y(3)
    {}
    void print()
    {
        std::cout << get_x() << ' ' << y << std::endl;
    }
private:
    int y;
};
int main()
{
    Test1** test = new Test1*[2];
    for (int i = 0; i < 2; i++)
    {
        if (i % 2 == 0)
        {
            test[i] = NULL;
            test[i] = new Test2;
        }
        else
        {
            test[i] = NULL;
            test[i] = new Test3;
        }
    }
    test[0]->print(); // ERROR. Is this even possible?
    test[1]->print(); // ERROR. Is this even possible?
    return 0;
}
Thank you I've only been coding for about 8 months.
 
     
     
    