Ejemplo
int getNum(){
return 5;
}

void main( int argc, char* argv[]) {
while( a = getNum() ) {
cout << "A is still 5";
}
}

Solución
Si la asignación es un error, cámbiela por una comparación. De lo contrario, ejecute la asignación fuera de la sentencia condicional.
int getNum(){
return 5;
}

void main( int argc, char* argv[]) {
int a = 5;
while( a == getNum() ) {
cout << 
"A is still 5";
}
}