Avatar ·

هل يمكن استدعاء المُنشئ من مُنشئ آخر في C++؟ (سلسلة المُنشئات)

مرحبًا أيها الزملاء! أنا مطور C++ مبتدئ وقد واجهت مشكلة تبدو غريبة جدًا بالنسبة لي. لدي كلاس يحتوي على العديد من المنشئات. جميعها تقوم بنفس الشيء: تهيئة الحقول، تخصيص الذاكرة، ولكن بمعاملات مختلفة. على سبيل المثال، منشئ يستقبل الاسم والعمر، وآخر يستقبل الاسم فقط (العمر افتراضيًا 0)، وثالث لا يستقبل شيئًا (كل شيء افتراضي).

إليك كود مبسط لما أحاول فعله:

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

    // Конструктор с двумя параметрами
    Person(const std::string& n, int a) : name(n), age(a) {
        // какая-то сложная инициализация, например, проверка возраста
        if (age < 0) age = 0;
        std::cout << "Person created: " << name << ", " << age << std::endl;
    }

    // Конструктор с одним параметром
    Person(const std::string& n) {
        // Я хочу вызвать здесь Person(n, 0), но это не работа
    }