You are not actually setting the pointers in the array, so a a demonstration, you would be writing something like this:
poly** polyPtr = new poly*[totalPolynomials];
for(int i = 0; i < totalPolynomials; ++i)
// You may need to pass constructor arguments here.
polyPtr[i] = new poly();
// or polyPtr[i] = myOtherPointer; in case you just wanna share it.
Storing you pointers would be similar instead of allocating memory for new ones. Basically, you would need to replace the new with your pointers.
No answer can go without the warning that you should consider higher-level data and memory management than this when programming in C++ for your productivity and mental well-being.
So, I would suggest using something like this:
std::vector<std::shared_ptr<poly>>
or
std::vector<std::unique_ptr<poly>>
Depending on your exact desire.
std::vector<std::unique_ptr<poly>>(orstd::vector<poly*>).