问题标签 [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.
design-patterns - 为什么 Boost.Any 是适配器模式的应用?
为什么 Boost.Any 是适配器模式的应用程序?谁将成为适应者?我很困惑。谢谢!
c++ - 如何从同一个函数返回不同的类型?
出于学习目的,我制作了自己的Any
类型。我不明白,如何退货Type
或Type *
视情况而定。这是我的课堂草图:
如您所见,我想创建两个any_cast
返回不同类型的函数。
c++ - 使用 typeid 处理不同类型
我正在尝试使用 boost::any 来封装 sqlite 返回值。然后我尝试编写一个循环来打印这些。
我的第一个想法是做类似的事情:
现在对于有经验的程序员来说,很明显这是行不通的,因为 typeid 返回的是实例而不是数字 id。经过一些研究,我想我可能会尝试,typeid(...).hash_code()
但这还不够constexpr
合格(除了哈希冲突的危险)。
问题
- 有没有比构建一个过多的
if ... else ...
迷宫来根据它们的 typeid 处理对象更好的方法? - 有没有理由
hash_code
不 aconst_expr
?这是单独编译目标文件的结果吗? - 有什么用
std::type_index
?考虑到它只提供了一些额外的运算符(<
,<=
,>
,>=
),为什么不能将其功能与 集成std::type_info
?
c++ - Boost::any 分配字符串值
IDE - Clion,C++11,Boost 版本 1.57.0
为什么这段代码不起作用?
但是这个工作正常:
你能解释一下这个错误的原因吗?
c++ - boost::any 类型支持有限
我希望有一种行为类似于boost::any
但类型集更有限的类型。像这样的东西:
你会如何建议实施这个?(我自己或使用现有的解决方案)
c++ - 尝试学习 BOOST::ANY Q1
该程序在调用时出现段错误
当我在调试器中运行它时,我似乎进入了 Change 函数,但是在检查this指针时是 0x00。我显然错误地使用了 BOOST::any,但我不确定我做错了什么?
我相信下面 auto 的返回类型
当我说时,我可能需要将 decltype 和 auto 与 Boost::any 一起使用
但这扩展了我对正在发生的事情的理解。
c++ - 有没有办法记住(存储)decltype 的返回类型?
我将这样的函数调用的返回值存储在 std::vector 中:
这是一个非常粗略的估计
如果压力还在,我可以很容易地说:
问题是,我如何记住存储在
? AFAIK,decltype 甚至不返回可以存储的值?
所以我需要一个可以存储 boost::any __and__ 的容器,记住它是 decltype以便我可以说(这不起作用,但这是我想要实现的本质)
c++ - 多态性、可变参数模板继承、切片、boost::any 类型转换
该程序编译,但 boost::any 转换失败。我怀疑以这种方式对模板类进行切片会混淆指针运算。这个想法是存储在容器中的内容
有不同的类型,例如
由于我通过将类型存储在 boost::any 中而丢失了类型,因此我需要调用 Change 而不必知道在给定压力下观察者的实际数量。我试图通过多态和虚方法来解决它,但至少这种尝试是行不通的。
有什么建议么?
编辑
我第一次尝试存储 Change 函数的地址:
如何 push_back 函数的地址?这不起作用:
然后我该如何提取它?
编辑 2
当我添加建议的代码时,出现错误:
编辑 3 C++14 安装:
我如何使用这个结构?我可以说:
我能够推回压力
但是,我不确定如何调用压力[0].Change(1999)。如果我说我收到错误:
c++ - 通过索引访问可变参数模板中的类型
我想通过索引获取可变参数模板中的类型。索引被指定为模板参数。我设法找到了一个有效的“黑客”,但我相信它不符合可变参数模板编程的精神。此外,它使用额外的内存。
这是带有一些解释的代码:
我想删除该对象InputPortsTuple
并将其替换为某种形式的递归过程,以推断getInputPortValue
.
理想情况下,我想N
成为一个动态参数而不是模板参数。但是,我不确定这是否可能。
c++ - 在具有不同模板参数的列表项上调用参数化方法
我正在尝试存储和操作具有不同参数类型的模板类对象列表;模板类有两个参数化方法,一个返回参数类型,一个void接受它作为输入。
更具体地说,我有一个定义如下的模板类:
以及它的不同规格,例如:
我希望能够将两者的不同对象存储在一个列表中,TestInt
然后TestString
键入并循环调用一种方法作为另一种方法的输入,如下所示:
我已经调查过了boost::any
,但我无法将迭代器强制转换为特定的类,因为我不知道每个存储对象的具体参数类型。也许这不能用静态类型语言如 C++ 来完成,但我想知道是否有办法解决它。
为了完整起见,我要补充一点,我的总体目标是开发一个“参数化观察者”,即能够定义具有不同参数的观察者(与观察者模式一样):Test
类是观察者类,而我试图正确定义的不同类型的观察者的列表存储在主题类中,它通过两种方法a()
和b()
.