问题标签 [boost-any]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Boost::any 和多态性
我boost::any
用来存储指针,想知道是否有办法提取多态数据类型。
这是理想情况下我想做的一个简单示例,但目前不起作用。
这失败了,因为 a 正在存储 B*,而我正在尝试提取 A*。有没有办法做到这一点?
谢谢。
c++ - Boost.Any 与 Boost.Variant
我无法在 Boost.Any 和 Boost.Variant 之间进行选择。
我应该什么时候使用每一个?
各自的优点和缺点是什么?
我基本上希望从外部来源存储一些状态。
c++ - 如何使用 boost::any_cast 转换为基本类型?
我正在使用 boost::any 来拥有多态类型,我需要能够将对象转换为其基本类型。
main函数的代码在运行时抛出如下错误:
如果我将 boost::any_cast 代码中的 static_cast 更改为 reinterpret_cast 它似乎可以工作。但是我不确定这样做的后果。
你有什么想法?
c++ - 在数组中存储对象
我想在地图中保存升压信号对象(关联:信号名称→信号对象)。信号签名不同,所以第二种映射应该是boost::any。
问题是如何在不定义新信号签名类型的情况下存储对象?
所有这些尝试都会引发错误:
c++ - 提高任何使用量
如何将我自己的类对象从 boost.xml 插入到 ptr_map 中。对象是模板化的,所以我不能在地图中使用一些静态类型名。所以我做了:
我的班级继承了boost::noncopyable。
错误是:错误:no matching function for call to ‘boost::ptr_map
。
UPD:我更喜欢做一些包装,不要使用 boost::any。所以:
为什么它不起作用(同样的错误)?我可以将继承的类传递给父接口。怎么了?
c++ - 从任何铸造
我正在使用任何类型的值将一些类打包到 ptr_map 中。
现在我想从任何恢复我的信号对象。这是一个特殊的功能:
你可能还记得,boost 的信号是不可复制的,所以我只能存储指针,我的函数也应该返回指针。
现在示例用法:
在这里我得到段错误。我检查了get函数中每个对象的类型:
有什么问题吗?与铸造一致的段错误。任何对象都应该包含插入类型吗?为什么它不想投射。
c++ - 铸造指针
我正在使用 ptr_map 来存储不同类型的指针。
我在那里存储了一些模板化的类对象:
现在我想从地图中获取值。这是一个带有参考的示例:
但我不喜欢引用,因为我不能返回,例如,如果转换错误或对象不存在,则返回 NULL。
如何从该地图中获取指针?
这构建但在铸造时失败,为什么?
c++ - 如何将 boost::any 打印到流中?
我有一个 Map std::map<std::string, boost::any>
,它来自boost::program_options
包。现在我想打印该地图的内容:
不幸的是,这是不可能的,因为boost::any
没有operator<<
定义。
打印该地图的最简单方法是什么?
我可以为任何自动尝试将每个any
转换为 int、然后是 double、然后是 string 等的输出运算符定义我自己的输出运算符,每次忽略错误并尝试转换直到转换成功并且我可以打印为指定的类型。
但是Boost中应该有更简单的方法吗?我需要类似反向的东西lexical_cast
...
c++ - 重载运算符 == 用于 STL 容器
我正在尝试从中删除一个类对象list<boost::any> l
我试着写这样的东西作为成员函数
你将如何编写一个重载函数来从 std::list 中删除一个类的对象boost::any
?
c++ - C++ - boost::any 序列化
据我了解,占位符没有序列化(boost::serialization
实际上)支持。boost::any
有人知道是否有办法序列化自定义boost::any
实体?
这里的问题很明显:boost::any
使用基于模板的占位符来存储对象并typeid
检查是否boost::any_cast
合适。
因此,有一个自定义的抽象超类placeholder
和自定义的基于模板的派生类,它们的创建方式如下:
显然,这在考虑序列化这些东西时也会带来一些麻烦。也许有人知道一些技巧来进行这种序列化(当然还有适当的反序列化)?
谢谢