É possível chamar um construtor de outro construtor em C++? (Encadeamento de construtores)
Olá, colegas! Sou um desenvolvedor C++ iniciante e me deparei com um problema que me parece muito estranho. Tenho uma classe com vários construtores. Todos eles fazem a mesma coisa: inicializam campos, alocam memória, mas com parâmetros diferentes. Por exemplo, um construtor recebe nome e idade, outro recebe apenas o nome (idade padrão 0), e um terceiro não recebe nada (tudo padrão).
Aqui está um código simplificado do que estou tentando fazer:
class Person {
public:
std::string name;
int age;
// Construtor com dois parâmetros
Person(const std::string& n, int a) : name(n), age(a) {
// alguma inicialização complexa, por exemplo, verificação de idade
if (age < 0) age = 0;
std::cout << "Person created: " << name << ", " << age << std::endl;
}
// Construtor com um parâmetro
Person(const std::string& n) {
// Quero chamar Person(n, 0) aqui, mas isso não funciona