gpt4 book ai didi

c++ - 在 Visual Studio 2010 中使用 boost::function 1.44 时出错

转载 作者:太空宇宙 更新时间:2023-11-03 10:35:29 25 4
gpt4 key购买 nike

我用 boost::function 尝试了一个简单的例子。但是我得到编译器错误说:

#include <boost/array.hpp>
#include <boost/function.hpp>
#include <iostream>

float div( float x, float y ) {
return x / y;
}

int main() {
boost::function<float (float x, float y)> f;
f = &div;
std::cout << f( 3.0f, 3.5f ) << "\n";
}

错误:

Error 2 error C2568: '=' : unable to resolve function overload c:\visual studio 2010 projects\net report\net report\main.cpp 12 1 NET Report
Error 1 error C2563: mismatch in formal parameter list c:\visual studio 2010 projects\net report\net report\main.cpp 12 1 NET Report

有什么想法吗?

谢谢,

最佳答案

错误后面的内容其实很有趣:

1> e:[...]\main.cpp(11): error C2568: '=' : unable to resolve function overload
1> e:[...]\main.cpp(5): could be 'float div(float,float)'
1> d:\microsoft visual studio 10.0\vc\include\stdlib.h(479): or 'lldiv_t div(_int64,_int64)'
1> d:\microsoft visual studio 10.0\vc\include\stdlib.h(475): or 'ldiv_t div(long,long)'
1> d:\microsoft visual studio 10.0\vc\include\stdlib.h(432): or 'div_t div(int,int)'

有多个函数名为 div在范围内(来自 stdlib.h ),并且编译器在您编写 &div 时不知道您指的是哪个, 要么:

  • 使用强制转换:f = static_cast<float (*)(float, float)>(&div);
  • 把你的div在单独的命名空间中运行:f = &my_namespace::div

关于c++ - 在 Visual Studio 2010 中使用 boost::function 1.44 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com