<分区>
我有一个抽象类 A
和一类 B
与构造函数:
B(A &a) {...}
现在,我在主程序中创建这些对象如下:
int main(){
std::unique_ptr<A> a = make_A();//don't mind make_A()
if(a==null)
a = make_default_A();
B b (*a);
}
现在我创建了一个设置系统的类:
class System{
public:
System();
private:
B b;
std::unique_ptr<A> a;
}
构造函数是:
System(){
a = make_A();
if(a==null)
a = make_default_A();
b(*a);
}
显然这是错误的,因为我不能调用 B
的构造函数如上面的代码所示,但我不知道该怎么做。我想到的唯一解决方案是使用 std::unique_ptr<B> b;
而不是 B b;
然后调用b = make<B> (*a);
.