我想要一个抽象类型的可选对象。但是,对于抽象类型,boost::可选失败:
#include <boost/optional.hpp>
class A {
virtual int getInt() = 0;
};
class B : public A {
int getInt() { return 666; };
};
int main() {
boost::optional<A> maybeAnA;
boost::optional<A> another(maybeAnA);
};结果:
error: invalid new-expression of abstract class type ‘A’仅仅使用指针似乎也不是一个可行的解决方案,因为某些函数需要将包含可选值的对象作为成员返回,尽管期望函数的调用方是该成员变量的所有者是不合逻辑的。
发布于 2015-01-19 11:03:23
你不能用你想要的方式去做。
可选尝试创建一个A类型的成员(在您的例子中),但是失败了。
我脑海中唯一的解决方案是存储(智能)指针。
https://stackoverflow.com/questions/28022856
复制相似问题