Как Вы используете конструктора не по умолчанию для участника?

У меня есть два класса

class a {
    public:
        a(int i);
};

class b {
    public:
        b(); //Gives me an error here, because it tries to find constructor a::a()
        a aInstance;
}

Как я могу получить его так, чтобы aInstance инстанцировали с (интервал i) вместо того, чтобы пытаться искать конструктора по умолчанию? В основном я хочу управлять вызовом конструктора a из конструктора b.

11
задан Jeremy Salwen 18 January 2010 в 20:24
поделиться

4 ответа

Вам необходимо назвать (int) явно в списке инициализатора конструктора:

b() : aInstance(3) {} 

где 3 - начальное значение, которое вы хотите использовать. Хотя это может быть любой int. См. Комментарии для важных заметок по заказу и другим предостережениям.

23
ответ дан 3 December 2019 в 04:32
поделиться

Используйте список инициализации:

b::b() : aInstance(1) {}
3
ответ дан 3 December 2019 в 04:32
поделиться

Просто используйте конструктор, который определен так:

class b {
public:
    b()
    : aInstance(5)
    {}
    a aInstance;
};
0
ответ дан 3 December 2019 в 04:32
поделиться

Я думаю, что вы должны использовать указатель на «A», как:

class b {
public:
    b() : aInstance(new a(5)) {}
    a *aInstance;
};

таким образом Вы будете определены поведение. Конечно, вам нужно будет освободить * ainstance в деструктора.

-2
ответ дан 3 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: