草庐IT

load-store-functions

全部标签

c++ - 将 std::function<int(int)> 赋值给 std::function<const int&(const int& x)>

以下代码编译但在VC++2015(发行版)中产生未定义的输出和运行时错误othercompilers.#include#includeintmain(){std::functionf=[](intx){returnx;};std::functiong=f;std::cout为什么赋值g=f;是允许的? 最佳答案 考虑重写等效代码以避免lambda或std::function:intf(intx){returnx;}intconst&g(intconst&x){returnf(x);}这是一个结构良好的代码,尽管如此,它仍会返回一个对

c++ - 如何确定对 IXMLDOMDocument::load() 的调用失败的原因?

我正在尝试调试代码中似乎是XML解析的问题。我已将其分离为以下代码片段:HRESULTCXmlDocument::Load(IStream*Stream){CComVariantxmlSource(static_cast(Stream));VARIANT_BOOLisSuccessful;*HRESULThr=m_pXmlDoc->load(xmlSource,&isSuccessful);return(hr==S_FALSE)?E_FAIL:hr;}注意:m_pXmlDoc类型为CComPtr.似乎是对IXMLDOMDocument::load()的调用(标有*)失败-IOW,它正在

采用依赖于模板参数的 std::function 的 C++11 模板函数

我正在尝试编写一个接受依赖于模板参数的std::function的模板函数。不幸的是,编译器无法正确推导出std::function的参数。这里有一些简单的示例代码:#include#includeusingnamespacestd;voidDoSomething(unsignedident,unsignedparam){coutvoidCallFunc(Identident,Paramparam,std::functionop){op(ident,param);}intmain(){unsignedid(1);unsignedparam(1);//Thefollowingfailst

c++ - 数组 : Storing Objects or References

作为一名Java开发人员,我有以下C++问题。如果我有类型A的对象并且我想将它们的集合存储在一个数组中,那么我应该只存储指向对象的指针还是存储对象本身更好?在我看来,存储指针更好,因为:1)通过将对象的指针设置为null,可以很容易地删除对象2)节省空间。 最佳答案 指针还是对象?在C++中不能将引用放在数组中。您可以制作一个指针数组,但我仍然更喜欢容器和实际对象而不是指针,因为:没有机会泄漏,异常安全更容易处理。它并没有减少空间——如果你存储一个指针数组,你需要对象的内存加上指针的内存。我唯一提倡将指针(或智能指针会更好)放入容器

c++ - 未定义对 'function' 的引用——链接器问题?

我目前正在尝试在Linux终端上编译和链接我的C++文件。我运行的命令是:g++-ogameplaygamePlay.cppplayer.cppmain.cppdisplay.cpp-lcurses该命令似乎可以完美地编译所有内容,但是一旦它尝试链接内容,我就会遇到2个错误。undefinedreferenceto'gamePlay::deal(std::vector>,std::vector>)'undefinedreferenceto'gamePlay::score(player)'下面是我的gamePlay.CPP文件。我真的迷路了,非常感谢任何帮助!#include"gameP

c++ - std::reverse_copy "error: function call has aggregate value"

#include#include#include#includeusingnamespacestd;intmain(){intarrA[]={1,2,3,4,5,6,7,8,9};vectorvecIntA(arrA,arrA+sizeof(arrA)/sizeof(arrA[0]));vectorvecIntB(vecIntA.size());//copy((vecIntA.rbegin()+3).base(),(vecIntA.rbegin()+1).base(),vecIntB.begin());//OKvector::iterators=(vecIntA.rbegin()+3)

c++ - 检查 C++11 中返回的 std::function 是否为 "valid"

我想像这样实现一个动态任务队列:typedefstd::functionJob;typedefstd::functionJobGenerator;//..JobGeneratorgen=...;autojob=gen();while(IsValidFunction(job)){job();}如何实现IsValidFunction?std::function是否有某种默认值可供检查? 最佳答案 您可以简单地检查job作为一个bool值:while(autojob=gen()){job();}这是一种简写形式,它赋值job来自gen()

c++ - 将函数分配给 std::function 类型时调用哪个函数原型(prototype)(以及如何调用)?

我有密码voidprints_one(){coutfoo;foo=prints_one;foo();return0;}它按预期工作;它打印“一个”。我不知道在赋值中调用了哪个赋值运算符原型(prototype)以及如何调用。看cppreference,好像就是这个函数templatefunction&operator=(Fn&&fn);但如果这是被调用的原型(prototype),我不明白函数如何绑定(bind)到右值引用。谢谢!更新:谢谢大家,我会阅读通用引用资料。关于40two的回答;此代码打印它是一个右值引用:templateclassFoo{public:Foo(){}Foo&

c++ - 虚拟重载与 `std::function` 成员?

我现在有一个类,我们称之为Generic.这个类有成员和属性,我打算在std::vector中使用它或类似的,处理这个类的几个实例。另外,我想特化这个类,通用对象和特化对象之间的唯一区别是一个私有(private)方法,它不访问类的任何成员(但被其他方法调用)。我的第一个想法是简单地声明它virtual并像这样在专门的类中重载它:classGeneric{//allothermembersandattributesprivate:virtualfloatspecialFunc(floatx)const=0;};classSpecialized_one:publicGeneric{pri

c++ - 使用 std::function 包装函数对象

谁能帮我理解为什么下面的代码会导致错误?classA{public:float&operator()(){return_f;}private:float_f=1;}a;auto&foo(){std::functionfunc=a;returnfunc();}intmain(){std::cout错误:error:non-constlvaluereferencetotype'float'cannotbindtoatemporaryoftype'float'returnfunc();^~~~~~1errorgenerated.在这里,在operator()中,我返回了对_f的引用,因此,我