I am working on a project where I have an array of children classes. I want to call an overridden child function from the array, but instead it calls the parent function.
#include <iostream>
class Parent {
public:
    Parent(){}
    void print() {
        std::cout << "I'm the parent!" << std::endl;
    }
};
class ChildOne : public Parent {
public:
    ChildOne(){}
    void print() {
        std::cout << "I'm childOne!" << std::endl;
    }
};
class ChildTwo : public Parent {
public:
    ChildTwo() {}
    void print() {
        std::cout << "I'm childTwo!" << std::endl;
    }
};
int main(int argc, char const *argv[]) {
    Parent arr[] = {ChildOne(), ChildTwo()};
    int n = 2;
    for(int i = 0; i < n; i++) {
        arr[i].print();
    }
    return 0;
}
The output I get is
I'm the parent!
I'm the parent!
Where the output I want is
I'm childOne!
I'm childTwo!
 
     
     
     
     
    