ragazzi ho un problemino:

codice:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <cstdlib>
using std::rand;
using std::srand;

#include <ctime>
using std::time;


#include "educational.h"

educational::educational(){
	srand( time ( 0 ) );
	int n1 = 1 + rand() % 9;
	int n2 = 1 + rand() % 9;
	int input = getMessage(n1, n2);
	int multiplex = n1*n2;
	while (!verifica(input, multiplex)){
		input=getError();
	}
	cout<<input;
	cout<<"Complimenti, la tua risposta e' esatta!"<<endl;
}
int educational::getMessage(int n1, int n2){
	int num;
	cout<<"Quanto fa "<<n1<<" per "<<n2<<"?"<<endl;
	cin>>num;
	return num;
}
bool educational::verifica(int input, int multiplex){
	return (input == multiplex);
}
int educational::getError(){
	cout<<"Hai sbagliato, prova ancora:"<<endl;
	int input;
	cin>>input;
	return input;
}
eseguendo questo codice da un main succede funziona e tutto ok, ma se per caso, invece di inserire un numero, inserisco un carattere letterale, mi entra in un ciclo infinito stampando

Hai sbagliato, prova ancora:
Hai sbagliato, prova ancora:
Hai sbagliato, prova ancora:
Hai sbagliato, prova ancora:
Hai sbagliato, prova ancora:
Hai sbagliato, prova ancora:

e così via fino all'infinito cosa diamine succede??