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