Boost::bind 绑定重载运算符问题

发布于 2024-10-03 13:25:28 字数 422 浏览 4 评论 0原文

我有一个 [] 运算符重载的类。我也有一个线程要开始... 如何将 [] 绑定到线程?

我试过这个:

<代码> threadpool.schedule( bind( static_cast< MyClass (MyClass::*)(const MyClass &arg )>( &MyClass::operator[]), arg ) )

但 VS2008 说:

错误 C2664:

'boost::threadpool::thread_pool::schedule': cannot convert parameter 1 from 'boost::_bi::bind_t' to 'const boost::function0 &'

我该如何解决这个问题?先感谢您。

I've a class with [] operator overloaded. I also have a thread to start...
How can I bind [] to the thread?

I tried this:


threadpool.schedule( bind( static_cast< MyClass (MyClass::*)(const MyClass &arg )>( &MyClass::operator[]), arg ) )

but VS2008 says:

error C2664:

'boost::threadpool::thread_pool::schedule': cannot convert parameter 1 from 'boost::_bi::bind_t' to 'const boost::function0 &'

How can i resolve this? Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

じ违心 2024-10-10 13:25:28

这看起来不对。您的成员函数仍然接受一个参数。所以你需要一个占位符,或者你忘记绑定 this

threadpool.schedule( bind( 
  static_cast< MyClass (MyClass::*)(const MyClass &arg )>(&MyClass::operator[]), 
  this, arg ) ) 

接受其类类型的 operator[] 看起来有点奇怪。这是一个如何查找“常用”下标运算符的示例

threadpool.schedule( bind(
  static_cast< MyClass (MyClass::*)(std::size_t)>(&MyClass::operator[]), this, index ) 
); 

That looks wrong. Your member function still accepts one argument. So you need a placeholder, or you forgot to bind this

threadpool.schedule( bind( 
  static_cast< MyClass (MyClass::*)(const MyClass &arg )>(&MyClass::operator[]), 
  this, arg ) ) 

An operator[] that accepts its class type looks a bit weird though. Here is an example how it should look for a "usual" subscript operator

threadpool.schedule( bind(
  static_cast< MyClass (MyClass::*)(std::size_t)>(&MyClass::operator[]), this, index ) 
); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文