Как вы используете конструктор, отличный от стандартного для члена?

У меня есть два classа

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) вместо того, чтобы искать конструктор по умолчанию? В принципе, я хочу контролировать вызов конструктора изнутри конструктора 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 в деструкторе.

Давайте будем гением компьютера.