aRandomNumberGenerator *games[2]; // array of 2 base class pointers
for(int i=0; i <= 2; i++)
games[i]->generate();
Во-первых, давайте работать, прежде чем мы займемся другими вещами.
Вы создаете массив, который будет содержать указатели на два объекта aRandomNumberGenerator, но вы никогда не создадите сами объекты aRandomNumberGenerator. games[0]
и games[1]
содержат бессмысленные значения. Кроме того, в цикле вы также получаете доступ к games[2]
, который не существует.
UPDATE:
По какой-то причине другой ответчик решил использовать причудливую сокращенную версию кода, которую я ненавижу, и, вероятно, запутал бы любой неопытный код C ++ (который явно является ОП), поэтому давайте сделаем это сами:
Derived1* ptr = dynamic_cast<Derived1*>(basepointer)
if (ptr != null)
{
// Do something with ptr
}