Я к "элите" С++ не отношусь, поэтому попробую помочь.
В 2008-й студии этот код компилируется нормально, и даже работает. Думаю что для твоего компилятора просто стоит указать квалификатор "virtual"
class Animal1 : public Animal
{
public:
virtual void Update();
virtual Animal* Create();
protected:
};
Кроме того не ясно зачем тебе виртуальная функция Create. Если я правильно понял ее назначение, то тебе следует сделать ее статической (static)
UPD: Нет, virtual указывать не обязательно, ошибка наверное действительно "где-то в коде, который нам не был продемонстрирован"