конструктор класса объекта с параметрами, являющегося членом другого класса
существует класс (A), содержащий в качестве члена экземпляр другого класса (B), с конструктором, содержащим параметры. Как правильно создать и инициализировать член класса (Б) не в процессе создания (А), а в его конструкторе, после вычисления необходимых параметров?
struct B{
...
B(int x, int y){..}
..
}
struct A{
..
B b(0,0); //<-- здесь я создаю объект класса B, который никогда не будет использоваться, как этого избежать?
..
A(..){
..
calc_params(p1,p2);
B b=B(p1,p2);
}
}
Ответы (1 шт):
Автор решения: Ivan Silkin
→ Ссылка
Как минимум вместо struct {...} написать class A {...}; и class b {...};
int p1 = 10, p2 = 20;
void calc_params(int& p1, int& p2) { }
class B {
public:
B(int x, int y) { }
B() { }
void SomeAction() { }
};
class A
{
private:
B* b;
public :
A()
{
calc_params(p1, p2);
b = new B(p1, p2);
b->SomeAction();
}
~A()
{
if(b != nullptr)
delete b;
}
};