Ok, let try to write a piece of code more similar to my real case, please take it as an example, it does not have to compile:
class A
{
public:
A() = delete;
A(int value);
...
}
class B
{
unique_ptr<A> a;
C c;
B() { a = make_unique<A>(c.getValue()); }
}
class C
{
public:
C();
int getValue() { return <an int value based on something>; }
}
Now I hope my question is clearer, because of some constraints I cannot pass int value to B constructor, then I cannot use initializer list. So, is my unique_ptr solution the preferred one? Thanks again.