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