我有一堂课
class Base {
public:
virtual ~Base() {}
virtual string returnString() = 0;
};
class B : public A {
public:
string returnString() { return "string"; }
}
class C : public A {
public:
string returnString() { return ""; }
}
Run Code Online (Sandbox Code Playgroud)
和功能
string returnStringFunction(...);
Run Code Online (Sandbox Code Playgroud)
我希望能够传递 C 类型的对象,但默认情况下,我希望此函数使用动态创建的 B 类型对象。
我记得使用过这样的东西:
string returnStringFunction(const A& a = *std::make_unique<B>())
Run Code Online (Sandbox Code Playgroud)
或者
string returnStringFunction(const std::unique_ptr<A> a = std::make_unique<B>())
Run Code Online (Sandbox Code Playgroud)
函数体示例:
string returnStringFunction(...) {
return a->returnString();
}
Run Code Online (Sandbox Code Playgroud)
但是这两个解决方案即使它们通常在我的“沙盒”环境中编译和工作,它们也会在工作区上生成SIGFAULT。知道是什么原因造成的或如何更好地解决它吗?
提前致谢