【问题标题】:I get error unresolved overloaded function type in c++我在 C++ 中得到错误未解决的重载函数类型
【发布时间】:2012-07-03 06:43:56
【问题描述】:

为什么会有这样的代码:

boost::bind (SomeFunc<float>, function arguments go here);

产生这个错误:

no matching function for call to bind(<unresolved overloaded function type>

谢谢

【问题讨论】:

标签: c++ boost


【解决方案1】:

可能是您的函数SomeFunc&lt;float&gt; 过载,在这种情况下boost::bind 无法处理此问题。您必须实施手动解决方案,有关详细信息,请参阅here

【讨论】:

  • 但我的函数不是类或结构的成员。
  • @user1486293 没关系 - 您仍然需要使用 static_cast 来解决歧义
  • @user1486293 它是否是成员函数并不重要。编译器无法解析你想要的重载,所以你必须帮助它。
【解决方案2】:

您需要使用static_cast 告诉编译器如果它不明确则选择哪个重载,例如:

#include <boost/bind.hpp>

void foo(int) {}
void foo(double) {}

int main() {
  boost::bind(static_cast<void(*)(int)>(&foo), _1);
}

有时“未解决的重载函数类型”可能意味着“没有一个重载是可行的”,在这种情况下,您需要弄清楚为什么它不能使用任何重载并修复它。

【讨论】:

  • 如果 foo 是模板函数呢?
  • @user1486293 - 如果不明确,则与static_cast 相同。请注意,它实际上并不是在抱怨 foo 的任何版本都不可行。
猜你喜欢
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
相关资源
最近更新 更多