问题标签 [reference-wrapper]
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++ - 变换标准:向量> 到标准:向量> 运行时错误时间:0 内存:3412 信号:6
我正在尝试将对 Base 对象的引用向量转换为对 Derived 对象的引用向量。一切编译正常,但我收到此错误:运行时错误时间:0 内存:3412 信号:6
这是我的代码:
dynamicCast() 函数有什么问题?
编辑:@John Zwinck 回答有帮助,但是当我尝试在我的代码中执行此操作时,我得到了编译错误:
不能 dynamic_cast '(& obj)->std::reference_wrapper<_Tp>::get()' (类型为 'class MEPObject')键入 'class MEPGene&' (目标不是指针或完整类型的引用)genes.push_back (dynamic_cast (obj.get()));
c++ - 将引用包装器的向量转换为基类到引用包装器的向量到派生类不能动态转换
如标题。尝试进行 dynamic_cast 时出现此错误
不能 dynamic_cast '(& obj)->std::reference_wrapper<_Tp>::get()' (类型为 'class MEPObject')输入 'class MEPGene&' (目标不是完整类型的指针或引用)genes.push_back (dynamic_cast (obj.get()));
c++ - 返回 C++ 引用包装器
返回如下所示的引用包装器是否危险:
我假设本地/堆栈变量 x 可以在foo2()
.
c++ - 如何在编译时检测 C++ 中的 std::reference_wrapper
假设我们有一些可变参数模板并且需要以std::reference_wrapper
不同的方式处理参数。我们怎样才能做到这一点?
c++ - C++:引用包装器和 printf
我有一个我想用 printf 打印std::vector
的对象(没有 cout);std::reference_wrapper
现在,如果我写
我得到一个无意义的号码(我认为是 的地址a
);为了获得我的价值,我必须做
有没有办法自动调用.get()
函数printf
(例如%
,打印我的不同规范reference_wrapper content
),所以我可以制作一个通用函数,既适用于std::reference_wrapper<type>
和type
?
c++ - 如何在 std::vector 之间进行比较和分配和 std::vector>?
下面以两种不同类型的 std::vector 为例:
在它们之间进行分配的一种可能方法是:
有用。但丑陋,也许很慢。与比较相同:
有没有更好的方法来完成这项工作?聪明又快速。
c++ - 标准::可选> - 可以吗?
是
是否符合 C++17 的标准(或草案)?
标准明确指出,std::optional
对于引用类型,格式不正确。但它包括reference_wrapper
吗?
c++ - 将 std::vector 作为参数传递的正确方法是什么?
我想传递一个填充了基于对象的同一类的向量。两者std::reference_wrapper
和无参考都不能解决它。解决这个问题的正确方法是什么?
c++ - std::function 来自初始化器列表中的 std::bind 初始化
我有一张在某些选择上要采取的行动图,
我想以新的初始化列表方式初始化那些向量:
我无法在向量中进行初始化以使函数正常工作,是否有以std::bind
某种方式将 传递给向量的方法?
我能够通过使用 lambda 表达式而不是绑定来使示例工作,我缺少什么吗?或者它不是正确的使用方式std::bind
?
我正在使用 C++11,因为我无法迁移到更新的标准。
c++ - std::reference_wrapper 和多态容器
我正在尝试std::reference_wrapper
为这些类制作一个多态向量:
现在我正在尝试std::reference_wrapper
像这样使用:
输出是:
这是我所期望的。
但是,现在,当我取消注释时,std::cout << (x.get() == i2t_1) << "\n";
我会得到
这让我感到困惑,因为typeid(x.get()).name()
返回8Int2TypeILi0EE
而不是F12Int2TypeBasevE
我得到的是什么typeid(Int2TypeBase()).name();
。此外which()
,派生类也被调用...那么为什么x.get()
inx.get() == i2t_1
评估为 a Int2TypeBase
?