Pointer to array of base class, populate with derived class
arrays, c++, derived-class, inheritance, pointers
Solution
Your array is of the wrong type: it stores `BaseClass` object instances instead of pointers to them. Since `BaseClass` seems to be abstract, the compiler complains that it cannot default-construct instances to fill your array.
Even if `BaseClass` were not abstract, using arrays polymorphically is a big no-no in C++ so you should do things differently in any case.
Fix this by changing the code to:
BaseClass** base = new BaseClass*[2];
base[0] = new FirstDerivedClass;
base[1] = new SecondDerivedClass;
That said, most of the time it is preferable to use `std::vector` instead of plain arrays and smart pointers (such as `std::shared_ptr`) instead of dumb pointers. Using these tools instead of manually writing code will take care of a host of issues transparently at an extremely small runtime cost.
Problem
If I have a base class, with only virtual methods and 2 derived classes from the base class, with those virtual methods implemented. How do I: ``` // causes C2259 BaseClass* base = new BaseClass[2]; BaseClass[0] = new FirstDerivedClass; BaseClass[1] = new SecondDerivedClass; ``` or: ``` // causes "base is being used without being initialized" BaseClass* base; // causes CC59 again BaseClass* base = new BaseClass; base[0] = FirstDerivedClass(); base[1] = SecondDerivedClass(); ``` (or something similar) ...so that I can access the `BaseClass`s methods through the `DerivedClass`, but by pointer and the pointer is an array of `DerivedClass`s?