У меня есть два класса
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.
Вам необходимо назвать (int) явно в списке инициализатора конструктора:
b() : aInstance(3) {}
где 3 - начальное значение, которое вы хотите использовать. Хотя это может быть любой int. См. Комментарии для важных заметок по заказу и другим предостережениям.
Используйте список инициализации:
b::b() : aInstance(1) {}
Просто используйте конструктор, который определен так:
class b {
public:
b()
: aInstance(5)
{}
a aInstance;
};
Я думаю, что вы должны использовать указатель на «A», как:
class b {
public:
b() : aInstance(new a(5)) {}
a *aInstance;
};
таким образом Вы будете определены поведение. Конечно, вам нужно будет освободить * ainstance в деструктора.