在使用websocketpp时,"没有匹配的函数用于调用bind"。
我正在制作一个(C ++)应用程序,该应用程序是WebSocket客户端和WebSocket服务器.为此,我正在使用库Websocketpp.为了使应用程序同时成为客户端和服务器,我希望endpoint1.run()和endpoint2.listen(port)多线程.这是出现问题的地方. 通常(单线)我使用:endpoint.listen(port); wht 将其变成我使用的多线程: boost::thread t(boost::bind(&server::listen, &endpoint, port)); sleep(1); cout , websocketpp::server*,
4 2023-12-02
编程技术问答社区
使用boost::bind进行排序
bool pred(int k, int l, int num1, int num2) { return (num1 nums; for (int i=50; i > 0; --i) { nums.push_back(i); } std::sort (nums.begin(), nums.end(), boost::bind(&pred, 5, 45)); } 我是新手. 我正在学习使用boost :: bind,我想对整数的向量进行分类,并摆脱向量大于45且小于5的矢量中的所有元素.如果有人可以帮我做吗? 我面临问题的原因是因为我试图在遍历矢量进行分类时摆脱矢量元素.我知道,如果我先排序,然后从中删除元素会容易得多.但是我想这样做.任何帮助都将不胜感激. 解决方案 您不能从sort中做到这一点. sort之前或之后删除元素. bool
4 2023-11-17
编程技术问答社区
boost::bind的返回类型是什么?
我想将函数的"活页夹"保存到变量中,以通过利用其操作员的过载设施在以下代码中重复使用它.这是我想要的代码: #include #include #include #include class X { int n; public: X(int i):n(i){} int GetN(){return n;} }; int main() { using namespace std; using namespace boost; X arr[] = {X(13),X(-13),X(42),X(13),X(-42)}; vector vec(arr,arr+sizeof(arr)/sizeof(X)); _bi::bind_t, _bi::list1
10 2023-10-30
编程技术问答社区
与线程池中boost::函数的使用有关的崩溃
我正在尝试使用pthread在C ++中实现线程池.我想将与线程管理相关的逻辑封装在一个对象中,该对象拥有这些线程的所有权.这意味着每当该物体被销毁时,都必须停止并清理线程. 我一直在测试我的代码,事实证明,当我在boost :: function时销毁workerThreadManager对象时,我会得到细分错误.请参阅GDB的代码和回溯.据我所知,我真的不明白为什么会发生这种情况,因此功能是可复制的,所以一旦我从队列中获得了它的副本,我就可以在一些小测试),然后调用该函数的副本. workerthreadmanager.h: #include "WorkerThreadManagerInterface.h" #include "utils/mutex.h" #include #include #include class WorkerThreadManager : public WorkerThr
8 2023-10-20
编程技术问答社区
std::stringstream作为一个函数的参数
我有一个std::vector temp_results,我希望使用std :: for_each浏览此矢量并串联一个字符串,因此我炮制了以下结构: std::stringstream ss; std::string res = std::for_each(temp_results.begin(), temp_results.end(), boost::bind(addup, _1, ss)); std::string addup(std::string str, std::stringstream ss) { ss
10 2023-10-03
编程技术问答社区
boost :: bind无法与boost :: tuple :: get <n>()
我试图使用boost::bind和boost::tuple> stl,但是每次我尝试编译时,我都会收到以下错误. error: call of overloaded ‘bind(, boost::arg&)’ is ambiguous 您知道我在这里做错了什么,为什么只为boost::arg? 谢谢 AFG #include #include #include #include #include #include #include int main( int argc, const char*
12 2023-09-30
编程技术问答社区
关于shared_ptr和指针的成员操作符`->*`和`std::bind`。
最近我发现shared_ptr没有指向成员操作员->*的指针.我创建了简单的示例: template auto invoke1(Pointer p, Function f, Args... args) -> decltype((p->*f)(args...)) { return (p->*f)(args...); } struct A { void g() { std::cout sa = std::make_shared(); invoke1(sa, &A::g); // compile error!! } Q1:为什么这样?为什么shared_ptr没有
8 2023-09-01
编程技术问答社区
在订阅回调中使用boost::bind的错误
我们会遇到此编译错误,然后发生更多错误,显示使用Boost ::作为订阅的回调时,将订阅参数与所有可能的候选函数匹配的尝试. error: no matching function for call to ‘ros::NodeHandle::subscribe(const char [18], int, boost::_bi::bind_t >&, moveit::planning_interface::MoveGroup&), boost::_bi::list2, boost::_bi::value > >)’ 我们的代码如下.评论的行显示了当未传递MoveGroup上下文(对象指针)时工作的代码. #include
10 2023-08-12
编程技术问答社区
有没有可能给boost::spirit::rule解析器附加一个动作,将解析后的结果分配给一个(尚)未知实例的成员?
我正在尝试从boost :: Spirit规则定义的动作中引用(但)未知实例的成员,因此在伪代码中, 而不是 double_ [ref(rn)= _1] 我正在寻找类似的东西 x ** ppx; double_ [ref(&x :: rn,ppx)= _1] 解决方法可能是一个简单的"语义动作",其中一个参数知道实例并能够写入它,例如 qi::rule start; my_grammar(DataContext*& dataContext) : my_grammar::base_type(start) , execContext(execContext) { start = qi::double_[ boost::bind(&my_grammar::newValueForXY, dataContext, ::_1) ]; 但是,我想知道是否有可能通过使用" phoenix :: ref(...)= value"直接"绑定
44 2023-08-03
编程技术问答社区
使用boost::bind的remove_if很慢。
我有一个std ::类的列表,并希望删除标记为删除的条目.我正在使用std :: remove_if和擦除. class MyClass { bool isDone(MyData& myData) { return myData.isDone(); } void removeIfDone(std::list& myList) { std::list::iterator it = remove_if(myList.begin(), myList.end(), boost::bind(&MyClass::isDone, this, _1)); myList.erase(it, myList.end()); } }; 我在一个小处理器上运行,该处理器的内存分配和Deallocation非常昂贵.
4 2023-08-03
编程技术问答社区
C ++ 提升绑定性能
绑定函数(使用Boost Bind)时是否会产生任何性能影响(正面或负面)? 解决方案 也许不是.这取决于 std::bind(或boost::bind)的结果是所谓的"绑定表达式",它具有由实现确定的不可知类型.这种类型是可召唤,它是可转换到std::function的实例(或boost::function). 内部,function(可能)使用类型擦除来处理各种复杂,状态的"可呼叫对象".这需要在某些情况(尽管不一定全部)情况下进行动态分配和虚拟调度. bind和function都陈述了,因为它们存储了绑定的参数. 结果是,如果可能的话,您应该避免将绑定表达式转换为function对象.绑定表达式本身可能会更便宜,并且您不应该害怕使用bind(例如,在将成员函数指针与实例和参数结合时).自由使用bind,但仅当您真正需要管理可呼叫实体的异质集合时才转换为function. 这是两个典型示例: 坏;避免这样做: std::function
20 2023-05-23
编程技术问答社区
C ++ 提升绑定性能
绑定函数(使用Boost Bind)时是否会产生任何性能影响(正面或负面)? 解决方案 也许不是.这取决于 std::bind(或boost::bind)的结果是所谓的"绑定表达式",它具有由实现确定的不可知类型.这种类型是可召唤,它是可转换到std::function的实例(或boost::function). 内部,function(可能)使用类型擦除来处理各种复杂,状态的"可呼叫对象".这需要在某些情况(尽管不一定全部)情况下进行动态分配和虚拟调度. bind和function都陈述了,因为它们存储了绑定的参数. 结果是,如果可能的话,您应该避免将绑定表达式转换为function对象.绑定表达式本身可能会更便宜,并且您不应该害怕使用bind(例如,在将成员函数指针与实例和参数结合时).自由使用bind,但仅当您真正需要管理可呼叫实体的异质集合时才转换为function. 这是两个典型示例: 坏;避免这样做: std::function
6 2023-05-23
编程技术问答社区
是否可以创建一个函数指针到一个函数'的`new`操作符/构造器?
如果我想参数化创建对象,我当然可以制作一个在特定类中称为新的函数并传递了指针.我想知道是否可以跳过该步骤并将功能指针传递给new运算符本身. 解决方案 boost :: lambda提供 new和delete的功能包装器.这些可用于轻松将new调用转换为函数对象. 其他解决方案 operator new(以及其他口味)会照顾分配内存,但不会构造对象.实际上,其返回类型为void*.构造对象的是新的表达式,它是语言的一部分,而不是函数.因此,不可能形成指针或引用它;这与形成对return的参考一样有意义.
12 2023-04-22
编程技术问答社区
Boost::asio和boost::bind: Functor内存从未被释放过
我的代码正在分配内存,也永远不会释放记忆,即使它应该(至少在我看来). . 标题看起来像这样: typedef boost::asio::ssl::stream sslSocket_t; class Object { boost::asio::io_service ioService_; boost::asio::ip::tcp::acceptor acceptor_; boost::asio::ssl::context context_; void functionOne(); void functionTwo(shared_ptr& sslSocket, const boost::system::error_code& error) } 和我这样的来源: void Object::functionOne() { for (int
72 2023-03-24
编程技术问答社区
在std::string::find上使用boost::bind无法编译
我有以下代码: int MimeDocument::GetAttachmentId( std::string const& content_id ) { using namespace boost::lambda; using boost::lambda::_1; using boost::bind; int id = 0; std::vector::iterator it = std::find_if( attachment_list_.begin(), attachment_list_.end(), bind( &std::string::find, content_id, _1 ) != std::string::npos ); if( it != attachment_list_.end() ) { id = std::di
16 2023-03-23
编程技术问答社区
帮助提升绑定/功能
我具有此功能签名,我必须匹配 typedef int (*lua_CFunction) (lua_State *L);//target sig 这是我到目前为止所拥有的: //somewhere else... ... registerFunction("testFunc", &LuaEngine::testFunc, this); ... //0 arg callback void funcCallback0(boost::function func, lua_State *state) { func(); } template void registerFunction(const std::string &funcName, boost::function func, SelfType *self) {
14 2023-03-15
编程技术问答社区
我怎样才能将boost::bind绑定到一个传递和返回std::string的管理类的成员?
我正在尝试做类似于这是我要运行的代码的削减版本: using namespace System; using namespace System::Runtime::InteropServices; #pragma unmanaged // The unmanaged boost function prototype the native library wants to bind to typedef boost::function MyNativeCallback; // The unmanaged library I'm trying to wrap class MyUnmanagedClass { public: MyUnmanagedClass() {} void RegisterCallback(MyNativeCallback callback); };
24 2023-03-02
编程技术问答社区
如何在C++/CLI中使用boost::bind来绑定一个管理类的成员
我正在使用本机C ++类中的boost ::信号,现在我在C ++/CLI中编写了.NET包装器,以便我可以将本机C ++回调作为.NET事件公开.当我尝试使用boost :: bind以获取托管类的成员函数的地址时,我会收到编译器错误3374,说除非我创建委托实例,否则我无法获取成员函数的地址.有人知道如何使用boost :: bind绑定托管类的成员功能? 为了澄清,以下示例代码导致编译器错误3374: #include public ref class Managed { public: Managed() { boost::bind(&Managed::OnSomeEvent, this); } void OnSomeEvent(void) { } }; 解决方案 当您的答案起作用时,它将您的某些实施暴露给世界(托管:: onsomeevent).如果您不希望人
22 2023-03-02
编程技术问答社区