Avatar ·

¿Se puede llamar a un constructor desde otro constructor en C++? (Cadena de constructores)

¡Hola, colegas! Soy un desarrollador principiante de C++ y me encontré con un problema que me parece muy extraño. Tengo una clase con varios constructores. Todos hacen lo mismo: inicializan campos, asignan memoria, pero con diferentes parámetros. Por ejemplo, un constructor recibe nombre y edad, otro solo nombre (edad por defecto 0), y el tercero no recibe nada (todo por defecto).

Aquí está el código simplificado de lo que intento hacer:

class Person {
public:
    std::string name;
    int age;

    // Constructor con dos parámetros
    Person(const std::string& n, int a) : name(n), age(a) {
        // alguna inicialización compleja, por ejemplo, verificación de edad
        if (age < 0) age = 0;
        std::cout << "Person created: " << name << ", " << age << std::endl;
    }

    // Constructor con un parámetro
    Person(const std::string& n) {
        // Quiero llamar aquí a Person(n, 0), pero esto no funciona
    }
}