【发布时间】:2013-07-17 10:57:57
【问题描述】:
我发现不可能从持有派生类型的boost::any 中提取对基类型的引用:
boost::any holder = Derived();
const Base& base_ref = boost::any_cast<const Base&>(holder);
抛出 boost::bad_any_cast 异常。
这似乎违反了Liskov substitution principle,不太方便。有什么解决方法吗?
【问题讨论】:
-
C++ 是一种多范式语言,这意味着它不仅仅是面向对象编程。话虽如此,
boost::any显然不打算以多态方式使用,因此 LSP 不适用。
标签: c++ boost polymorphism type-erasure boost-any