草庐IT

bessel-functions

全部标签

c++ - 为什么 std::function 不是有效的模板参数,而函数指针是?

我已经定义了名为CallBackAtInit的类模板,其唯一目的是在其初始化时调用一个函数(构造函数)。该函数在模板参数中指定。问题是模板不接受std::function作为参数;但他们接受函数指针。为什么?这是我的代码:#include#include/*Doesnotwork:*/templatecall_back>/*Workfine:*///templateclassCallBackAtInit{public:CallBackAtInit(arg_typearg){call_back(arg);};};voidprintInt(inti);classHoldInt:privat

c++ - 存储在 std::function 中时,无捕获 lambda 无法转换为函数指针

通常,没有捕获的C++lambdashouldbeconvertable到c风格的函数指针。不知何故,使用std::function::target转换它不起作用(即返回一个nullptr),而且target_type与签名类型不匹配,即使它看起来一样。在VC13和GCC5.3/5.2.0/4.8上测试最小测试示例:#include#includevoidMaybe(){}voidcallMe(std::functioncallback){typedefvoid(*ftype)();std::cout()预期的输出是11实际输出001问题是:为什么lambda的签名与传递的函数不同?

c++ - 编译器错误 : Function call with parameters that may be unsafe

得到了一些不是我的代码并且它产生了这个警告atm:iehtmlwin.cpp(264):warningC4996:'std::basic_string::copy':Functioncallwithparametersthatmaybeunsafe-thiscallreliesonthecallertocheckthatthepassedvaluesarecorrect.Todisablethiswarning,use-D_SCL_SECURE_NO_WARNINGS.SeedocumentationonhowtouseVisualC++'CheckedIterators'with[_

c++ - 替代 std::function 将函数作为参数传递(回调等)

我在使用C++11进行实验时偶然发现了这一点。我发现这是一个明显的解决方案,但我无法在野外找到任何其他示例,所以我担心我遗漏了一些东西。我指的做法(在“addAsync”函数中):#include#include#include#includeintaddTwoNumbers(inta,intb){std::coutfuture){std::cout)->void){//number){//lambdafunctionsworkgreataddAsync(number.get(),20,[](std::futurenumber){addAsync(893,4387,printNum);

c++ - 使用 std::function 中函数的类型来声明该类型的多个函数

假设我有typedefstd::functionFooType;我想为一系列函数声明函数原型(prototype),我可以将它们插入到这种类型的std::function中。我知道我会写doublefoo1(int,long);doublefoo2(int,long);等等,但是有没有办法在声明函数原型(prototype)时以某种方式使用FooType?类似的东西FooType::typefoo1,foo2;也许我可能不得不使用(*foo1)或类似的?自然,在函数的实现中,我需要把它拼写出来,这样我就可以输入一些参数,但是像上面这样写可以让我的头文件更干净。

c++ - Arduino C++ 代码 : can you use virtual functions and exceptions?

跟进thiscomment来自问题Writingfirmware:assemblyorhighlevel?:为Arduino编译C++代码时平台,可以使用虚函数、异常等吗?或者您想(必须)使用C++的一个子集(如thecomment中所述)?为Arduino平台编程时还有其他注意事项吗? 最佳答案 Arduino环境使用GCC工具链的AVR版本。代码编译为C++,因此您可以使用类。虚拟功能是可能的;vtables将存储在.data部分并具有正确的地址。事实上,Print基类使用虚函数来使各种“打印”方法适应不同的输出类型。由于代码空

c++ - "cannot be used as a function error"

我正在编写一个使用不同.cpp文件中的函数的简单程序。我所有的原型(prototype)都包含在一个头文件中。我将一些函数传递给其他函数,但不确定我是否正确执行。我得到的错误是“'functionname'不能用作函数”。它说不能使用的函数是growthRate函数和estimatedPopulation函数。数据通过输入函数输入(我认为这是有效的)。谢谢!头文件:#ifndefheader_h#defineheader_h#include#include#includeusingnamespacestd;//prototypesvoidexterninput(int&,float&,

c++ - 类声明的编译错误 "looks like a function definition"是什么意思?

我最近遇到了这个问题。我发现很多人都在问这个问题——here,forexample——但没有具体的答案。这是从该链接中提取的示例代码:classAFX_BASE_APPLICATION_APP_CLASSCFileExtension{public:CFileExtension();virtual~CFileExtension();};这产生的错误是:c:\FileExtension.h(14):errorC2470:'CFileExtension':看起来像函数定义,但没有形参列表;跳过明显的body 最佳答案 您几乎肯定错过了定义

c++ - 如何使用 std::function 指向函数模板

#includeintfunc(intx,inty){returnx+y;}intmain(){typedefstd::functionFuncp;Funcpfuncp=func;return0;}但是可以指向模板函数吗?#includetemplateTfunc(Tx,Ty){returnx+y;}intmain(){typedefstd::functionFuncp;Funcpfuncp=func;return0;} 最佳答案 C++中没有模板函数这样的东西——人们随便提到的“模板函数”实际上是函数模板:定义函数的模板。因此,上

C++ : Extern C Functions inside a Namespace

我必须链接两个库,比如A和B。其中一些文件在两个库中是通用的。所以,我在命名空间内的库A中声明函数,比如abc。因此,在A和B中,函数func如下所示:[inA]namespaceabc{extern"C"voidfunc();}[inB]extern"C"voidfunc();在构建项目时,编译器会抛出链接错误,说明函数func的多个定义。是不是命名空间内的A中的函数func或者外部“C”函数是否存在问题。如果有,那么我该如何区分它们呢? 最佳答案 当您使用Extern"C"时,您将关闭名称修饰,因此您会丢失命名空间信息,因为C没