所以我对 C++ 很陌生,我正在尝试std::unique_ptr
与返回的命名构造函数结合使用std::optional
. 我有以下结构:
class AbstractClass {
public:
virtual ~AbstractClass() {}
};
class ChildClassA : public AbstractClass {
public:
static std::optional<ChildClassA> construct(...) { ... }
private:
ChildClassA(...) : ...{...} { ... }
};
std::unique_ptr<AbstractClass> construct(...) {
if (...) {
return std::make_unique<ChildClassA>(...); // call ChildClassA::construct(...) here
} else {
return std::make_unique<ChildClassB>(...); // call ChildClassB::construct(...) here
}
}
我想要一个函数construct()
,根据某个值调用其中一个子类的构造函数。这些子类的构造函数可能会失败,因此我使用命名构造函数返回一个std::optional
,如here所述。construct()
应返回 astd::unique_ptr
以显式传递所有权并防止复制构造的对象。
这可能吗?