конструктор класса объекта с параметрами, являющегося членом другого класса

существует класс (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;
    }
};
→ Ссылка