草庐IT

language-binding

全部标签

c++ - 无法将类型 'int&' 的非常量左值引用绑定(bind)到类型 'int' 的右值

以下代码编译失败:#includeusingnamespacestd;intadd2(constint&x){returnx+2;}templateTadd2T(T&&x){returnadd2(std::forward(x));}intmain(intargc,char**argv){intx=0;cout通过这条消息:main.cpp:Ininstantiationof'Tadd2T(T&&)[withT=int&]':main.cpp:26:20:requiredfromheremain.cpp:12:16:error:cannotbindnon-constlvaluerefer

c++ - 将非静态函数绑定(bind)到回调的问题

这个问题在这里已经有了答案:std::functionwithnon-staticmemberfunctions(3个答案)关闭3年前。我无法将非静态成员函数绑定(bind)到回调。我必须将test2类成员函数here()绑定(bind)到test1成员callBack这是一个std::function,但我找不到执行此操作的方法。如果您有任何想法,任何人都可以建议我。在代码中显示#include#include#includeusingnamespacestd;classtest1{public:typedefstd::functioncallback_function_t;call

c++ - 将指针临时绑定(bind)到引用

请引用下面的代码。在此代码中,我将test.c_str()返回的constchar*存储到一个引用中。我的问题是-data是否会正确引用test的内容?我认为test.c_str()返回的ptr将是临时的,如果我将它绑定(bind)到一个引用,该引用将无效。我的想法对吗?classRefPtrTest{std::stringtest;StoringClassstoringClass;public:RefPtrTest():test("hello"),storingClass(test.c_str()){}}存储类在哪里classStoringClass{constchar*&data;

c++ - 将 boost::bind 与 boost::function 一起使用:检索绑定(bind)变量类型

有什么方法可以检索有关哪些参数受boost::bind限制的信息,还是需要手动存储?即:在.h中classMyClass{voidfoo(inta);voidfoo2(doubleb);voidbar();voidexecute();int_myint;double_mydouble;}在.cpp中MyClass::bar(){vectormyVector;myVector.push_back(boost::bind(&MyClass::foo,this,MyClass::_myint);myVector.push_back(boost::bind(&MyClass::foo2,thi

c++ - 在 OpenGL 对象包装器中自动绑定(bind)

我倾向于将OpenGL对象包装在它们自己的类中。在OpenGL中有绑定(bind)的概念,你绑定(bind)你的对象,用它做一些事情然后解除绑定(bind)。例如,一个纹理:glBindTexture(GL_TEXTURE_2D,TextureColorbufferName);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BASE_LEVEL,0);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAX_LEVEL,1000);glBindTexture(GL_TEXTURE_2D,0);包装这将是这样的:textu

c++ - 在 C++11 中重新绑定(bind) lambda...这可能吗?

我有一个情况,我有一个lambda作为由某个函数调用创建的成员变量。问题是它将此作为其操作的一部分进行捕获。稍后,我希望能够复制整个对象...但是,在复制时我不知道lambda是如何创建的(它可能是通过不同的代码路径在多个位置定义的)。因此,对于在复制构造函数中放入什么,我有些不知所措。理想情况下,我想将lambda的捕获“重新绑定(bind)”到创建的新“this”。这有可能吗?下面是一些示例代码:#include#include#includeclassFoo{public:Foo()=default;~Foo()=default;voidset(conststd::string&

c++ - 'bind' 和 'function' 的问题

前一段时间,我遇到了如何将bind返回的可调用对象(称为A)传递给另一个函数(称为B)的问题,该函数需要一个参数,该参数是指向来自A的函数的指针。我发现bind返回的可调用A具有非常复杂的类型,因此放弃了我的方法。然后我在功能header中了解了“功能”,这听起来好像可以解决我的问题。然而,尝试了几次之后,我又一次受挫了!也许你能帮忙?下面是一些不起作用的代码:#include#include//Libraryfor"bind"and"function"#includeusingnamespacestd;usingnamespacestd::placeholders;//for_1,_

c++ - 可变长度数组 VLA(静态绑定(bind)或动态)

我已经很久没有在基本的编译器中使用基本数组进行编程了,但是最近我看到了这样的数组声明:inty;cin>>y;intz[y];过去的编译器常常给出错误“数组的存储大小不是常量”。然后我发现了C99中的可变大小数组。我想知道他们是如何在内部运作的。这会使数组动态化吗?这个内存是在堆上分配的吗?这种绑定(bind)是否仍然是静态完成的?如果是这样的话。 最佳答案 VariableLengthArray(VLA)是C99的一个特性,但包括gcc在内的几个编译器支持VLAasanextension在C99和gcc之外和clang在C++中支

c++ - 省略 std::bind 中的 std::placeholders

要创建std::function,我是这样做的:-std::functionf=std::bind(&B::fb,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3);voidB::fb(intx,intk,intj){}//example很明显B::fb接收三个参数。为了提高可读性和可维护性,我希望我可以这样调用它:-std::functionf=std::bind(&B::fb,this);//omit_1_2_3问题C++中是否有任何功能可以省略占位符?它应该自动按顺序调用_1、_2、...

c++ - 右值引用绑定(bind)到 std::function 类型的左值

为什么下面的代码在(@)处没有编译错误?我认为lamb是左值,因此它不会绑定(bind)到右值引用。usingFunctionType=std::function;usingIntType=int;structFoo{voidbar(FunctionType&&){}voidbaz(IntType&&){}};Foofoo;foo.bar([](){});//OKautolamb=[](){};foo.bar(lamb);//(@)Nocompilationerror?!foo.baz(5);//OKinti=5;foo.baz(i);//Error 最佳答