Función para verificar si la cadena contiene un número

Estoy trabajando en un proyecto en c ++ (que recién comencé a aprender) y no puedo entender por qué esta función no funciona. Estoy intentando escribir una clase "Persona" con una variable nombre_nombre, y uso una función set_first_name para establecer el nombre. Set_first_name necesita llamar a una función (la siguiente) para verificar si el nombre tiene algún número. La función siempre devuelve falso, y me pregunto por qué. Además, ¿es esta la mejor manera de verificar los números, o hay una mejor manera?

   bool Person::contains_number(std::string c){ // checks if a string contains a number
        if (c.find('0') == std::string::npos || c.find('1') == std::string::npos || c.find('2') == std::string::npos || c.find('3') == std::string::npos
        || c.find('4') == std::string::npos || c.find('5') == std::string::npos || c.find('6') == std::string::npos || c.find('7') == std::string::npos
        || c.find('8') == std::string::npos || c.find('9') == std::string::npos){// checks if it contains number

        return false;
        }
        return true;
    }

Respuestas a la pregunta(10)

Su respuesta a la pregunta