function-pointers

    1热度

    1回答

    我目前正面临着一个非常恼人的问题好家伙: 我正在写使用函数指针的作品回调管理器的系统,现在考虑到现在为止我已经分配的事实void函数指针指向一些其他非void函数指针,我已经意识到它实际上不允许它。 此刻我正在考虑投射void指针,以便匹配我为我的原型函数每个回调,但我不明白如何执行铸造。 它是可行的,还是我应该采用另一种解决方案? 目前这些都是我的回调容器及其类型定义: typedef void

    0热度

    2回答

    也许我是用这个问题离开左边的领域,但是有可能通过构造函数定义成员函数吗? 在我的情况下,我想写一个类来执行健壮的模型拟合(使用RANSAC)。我希望这可以推广到不同类型的模型。例如,我可以用它来确定飞机对一组3D点的估计。或者,也许我可以确定两组点之间的转换。在这两个例子中,可能需要有不同的错误函数和不同的拟合函数。而不是使用类,静态函数调用可能看起来像 model = estimate(data

    5热度

    1回答

    struct A { void f() {} }; void f() {} int main() { auto p1 = &f; // ok auto p2 = f; // ok auto p3 = &A::f; // ok // // error : call to non-static member functio

    -1热度

    1回答

    我想写一个函数,它可以返回“malloc”函数指针。 但有一个错误,该平台是Windows 7 +的Visual Studio 2015年 源代码 “malloc.cpp”: #include <cstdlib> namespace portable { static void *(*malloc_impl)(size_t) = std::malloc; static

    0热度

    3回答

    我有一个函数会遍历函数指针数组,并按顺序调用这些函数中的每个函数。 如果在此过程中更改函数指针数组的内容会发生什么?函数调用是否可以被认为是足够原子的,以确保没有任何意外事件发生,或者必须注意不要改变函数指针,例如在堆栈上进行推送? 下面的一些示例(伪)代码。 init()在启动时运行一次,并且callFunctions()定期运行,例如每秒一次。然后changeFunctions()出现并更改f

    0热度

    1回答

    我写的代码是否有效?我试图写一个表达式,它是一个指向一个函数的指针数组,该函数接受一个单一的参数int并返回void。所以函数有返回类型void。但我不知道我的(**[])表达式是否有效,或者我应该将它写为(*(*[]))?因为后面的意思是指向函数的指针数组,该函数是指向函数的指针。 void(*(*[])(int));

    0热度

    2回答

    我有一个Collection类,它旨在存储不同类型的对象,但是我想调用这些类共享的特定方法名称(例如ToString())。 这里是我的尝试: class Collection { public: void *data[]; void Collection() {} void ~Collection() { for (int i = 0; i

    0热度

    1回答

    struct test { void f() {}; }; test t1; using memfun_t = void (test::*)(); memfun_t mf = &test::f; auto a1 = &test::f; // OK auto a2 = t1.*mf; // error auto a3 = &(t1.*mf); // still no

    0热度

    3回答

    我不知道如何从字符***调整char ** 2D数组的大小。 char ** 2D数组通过此调整大小函数传递,如下所示。 下面是所述函数: resize_canvas(&C, 5, 6, 5, 10, 'e'); 这通过下面的代码。它打印出一个字符***,但不是我想要的大小。它必须能够从上面的功能调整到任何给定的大小: void resize_canvas(char*** Cp, int ol

    3热度

    2回答

    当我编写一个“无意识的”代码片段时,我遇到了这个问题,并成功编译并获得了所需的行为。后来我注意到了这种变化的奇怪之处,并意识到我使用了一个完成函数指针typedef的逆序。现在我很困惑,如果“意外的”错误实际上是句法上的错误。 通用惯例: typedef void* (*_malloc_fail_handler_ptr)(int) __attribute__ ((unused)); _mallo