我用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 = ÷
std::cout << f( 3.0f, 3.5f ) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
错误:
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
Run Code Online (Sandbox Code Playgroud)
任何的想法?
谢谢,
陈
错误后面的内容实际上非常有趣:
1> e:[...]\main.cpp(11):错误C2568:'=':无法解决函数重载
1> e:[...]\main.cpp(5):可能'浮动DIV(浮点,浮点)"
1> d:\微软的Visual Studio 10.0\VC \包括\ stdlib.h中(479):或'lldiv_t DIV(_ 的Int64, _int64)'
1> d:\微软的Visual Studio 10.0\VC \包括\ stdlib.h中(475):或'ldiv_t DIV(长,长)'
1> d:\微软的Visual Studio 10.0\VC \包括\ stdlib.h中(432):或"div_t DIV(INT,INT) "
div
在scope(来自stdlib.h
)中有多个命名的函数,编译器在编写时不知道你指的是哪一个&div
:
f = static_cast<float (*)(float, float)>(&div);
div
函数放在单独的命名空间中:f = &my_namespace::div
归档时间: |
|
查看次数: |
476 次 |
最近记录: |