草庐IT

language-binding

全部标签

c++ - 从 boost::bind 移动到 std::bind:编译错误

我构建并完美运行了这段代码:boost::functionbar=boost::bind(&Bar::BarHandler,this,_1);//SomewhereelseinBar.cppvoidBar::BarHandler(std::stringmessage){//Dostuff}当我愉快地将上面代码中的boost更改为std时,我开始收到此错误(我的编译器是VisualStudio2010SP1的):c:\programfiles\microsoftvisualstudio10.0\vc\include\xxpmfcaller(42):errorC2664:'void(std

网络连接 UDP2,UDP Connect, bind, send, recieve认知, -入门8

LWIP编程接口有RAW,NETCONN,SOCKET2.UDP函数的理解#defineUDP_SERVER_PORT8000//PCside#defineUDP_CLIENT_PORT1234//ctrlboardside//PCIPaddress#defineDEST_IP_ADDR0192#defineDEST_IP_ADDR1168#defineDEST_IP_ADDR23#defineDEST_IP_ADDR3115/*CreateanewUDPcontrolblock*/upcb=udp_new();if(upcb!=NULL){/*assigndestinationIPaddre

c++ - 使用 STL 绑定(bind)多个函数参数

在过去,我使用bind1st和bind2nd函数来对STL容器进行直接操作。我现在有一个MyBase类指针的容器,为简单起见如下:classX{public:std::stringgetName()const;};我想使用for_each调用以下静态函数并绑定(bind)第一个和第二个参数:StaticFuncClass::doSomething(ptr->getName(),funcReturningString());我将如何使用for_each并绑定(bind)此函数的两个参数?我正在寻找类似的东西:for_each(ctr.begin(),ctr.end(),bind2Args

c++ - C 到 C++ : Transitioning from one language to the other

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++tutorialforexperiencedCprogrammer.我经常使用多种语言进行编程,最近一直在使用C++。基本上我的类只是对纯C代码的包装。几乎就像一个带有关联方法的结构。这为我的数据提供了我想要的封装和隐私。我有一个小的类层次结构,几乎没有使用继承。我熟悉面向对象的概念,并且知道当我需要了解这方面的特定概念时可以使用哪些搜索词。然而,正如我在编程世界中的尝试所发现的那样,通常真正有用的语言特性对新手或新手来说是隐藏的,而我需要的有用的部分已经写好了并且在某个地方的库中可以免费使用可用(大多

c++ - 将 Google Mock 与 boost::bind 结合使用

我有一个类,其构造函数采用Boost函数,我想使用GoogleMock对其进行测试。以下代码显示了一个示例类以及我对其进行测试的尝试:我的类.h:#includeclassMyClass{public:MyClass(boost::functioncallback);voidcallCallback();private:boost::functionm_callback;};MyClassTest.cpp:#include#include#include#include"MyClass.h"classCallbackMock{public:MOCK_METHOD0(callback,v

c++ - 轻量级 boost::bind

我对pass-callback-data-as-void*-struct反模式感到厌烦。Boostbind很好地解决了它,但它是一个NotAcceptable依赖项。什么是轻量级替代品?我将如何尽可能简单地自己编写它? 最佳答案 首先,我质疑您关于它太重以至于您无法使用的说法。其次,如果您需要控制行为,请滚动您自己的模板。第三,如果你害怕滚动自己的模板,我怀疑你判断boost::bind太重以至于你无法使用的能力。 关于c++-轻量级boost::bind,我们在StackOverflo

c++ - 为什么 std::bind 不考虑功能元数?

如果我有这个简单的案例:structFoo{voidbar();voidbaz(int);};这会编译是有道理的:Foofoo;autof=std::bind(&Foo::bar,&foo);但是为什么bind会被设计成这样:autog=std::bind(&Foo::baz,&foo);我可以调用f,但我永远不能调用g。为什么还要进行编译?要求我必须这样做的理由是什么:autog2=std::bind(&Foo::baz,&foo,std::placeholders::_1);如果你想弄乱哪些参数被传递以及以什么顺序传递,我可以理解使用占位符,但为什么不让默认传递所有参数无需指定的正

c++ - boost::bind 不能与条件表达式一起使用?

当我取消注释条件表达式时,程序将无法在visualc++2008下编译。#include#include#includetypedefboost::functionvii_t;typedefboost::functionvi_t;voidfoo(inta,intb){}voidbar(inta){}intmain(intargc,char*argv[]){//vi_ttest=true?boost::bind(foo,_1,100):boost::bind(bar,_1);vi_ttest1=boost::bind(foo,_1,100);vi_ttest2=boost::bind(b

c++ - 如何在没有特定模板大小写的情况下存储 std::bind 的 vector ?

通过question之后在std::bind上,我想知道是否可以保存由std::bind创建的函数的vector这样我就可以避免使用std::function及其重量级包装。#include#include#include#includeintadd(inta,intb){returna+b;}intmain(){//Ibelievethishereisjustaspecialtypeofboundfunction.autoadd2=std::bind(add,std::placeholders::_1,2);autoadd3=std::bind(add,std::placeholde

c++ - 为以太网适配器设置自定义 ip 时无法绑定(bind)套接字

问题在我们运行RTEMS4.9.2的系统上,我们遇到了一个非常奇怪的套接字通信问题。我们正在设置套接字并使用以下命令进行绑定(bind)://Bindthesockettosetthelocalportsockaddr_inlocalSocketAddress={0};localSocketAddress.sin_family=AF_INET;localSocketAddress.sin_port=(u_short)localPort;localSocketAddress.sin_addr.s_addr=localAddress;if(bind(mSocket,(sockaddr*)&