Problema C ++ eof () - nunca retorna verdadeiro?

Então, eu estou tentando ler este arquivo. Tudo parece que deve funcionar, mas durante o tempo de execução o programa atinge o tempo limite e para de funcionar, e eu tenho que fechá-lo. O que está acontecendo? Eu suspeito que o teste oef () nunca está retornando true e continua procurando mais no arquivo. Não tenho como arrastar linhas vazias no arquivo de texto. Eu tentei depurar isso como um louco. Não consigo encontrar nada errado, mas ele ainda se recusa a trabalhar.

Pet** petArray;

ifstream textFile2;
textFile2.open("pets.txt");

int i = 0;
string temp;
int tmpNum = 0;

if (textFile2.is_open())
{
    while (!textFile2.eof())
    {

        getline(textFile2, temp);

        petArray = new Pet*[arraySize];

        if (temp == "Dogs" || temp == "Cats" || temp == "Iguanas" || temp == "Pigs")
        {
            if (temp == "Dogs") tmpNum = 0;
            if (temp == "Cats") tmpNum = 1;
            if (temp == "Iguanas") tmpNum = 2;
            if (temp == "Pigs") tmpNum = 3;
            temp == "";
        }
        else
        {
            if (tmpNum == 0)
            {
                petArray[i] = new Dog(temp);
                cout << "Dog " << temp << " added" << endl;
            }
            if (tmpNum == 1)
            {
                petArray[i] = new Cat(temp);
                cout << "Cat " << temp << " added" << endl;
            }
            if (tmpNum == 2)
            {
                petArray[i] = new Iguana(temp);
                cout << "Iguana " << temp << " added" << endl;
            }
            if (tmpNum == 3)
            {
                petArray[i] = new Pig(temp);
                cout << "Pig " << temp << " added" << endl;
            }
            arraySize++;
        }

        i++;
    }
}

Aqui está o formato do arquivo de texto:

Dogs
d1
d2
Cats
c1
c2
Iguanas
i1
i2
Pigs
p1
p2

Alguma sugestão?

questionAnswers(2)

yourAnswerToTheQuestion