function-pointers相关内容
我确实希望能够使用extFunction或std::max或std::min作为Square方法的参数,而无需声明lambda: template T extFunction(T a, T b) { return a; } class Stuff { public: template int square(int n
..
我有一个大约有十行代码的方法。我想创建更多做同样事情的方法,除了需要更改一行代码的小计算。这是一个完美的应用程序,可以传递函数指针来替换那一行,但是Java没有函数指针。我的最佳替代方案是什么? 推荐答案 匿名内部类 假设您希望通过String参数传入一个函数,该参数返回一个int。 首先,如果不能重用现有的接口,则必须将函数定义为其唯一成员。 interface Strin
..
假设我有以下指向单参数的双精度函数的抽象接口 module abstract abstract interface function dp_func (x) double precision, intent(in) :: x double precision :: dp_func end function dp_func end in
..
我想在C函数中传递一个宏作为参数,但我不知道这是否可能。 我想看看这个操作,例如: 我有这些宏: #define PRODUCT(A, B) ((A) * (B)) #define SUM(A, B) ((A) + (B)) 然后我有这个函数,签名如下: int just_a_function(int x, MACRO_AS_PARAMATER_HERE); 然后我想调
..
我在一个动态编程环境中工作,在那里我可能需要定义(或重新定义)一个类函数。因此,请考虑以下示例: def func(self): print("hello2 ") class ManClass: def __init__(self): pass def func1(self): print("hello1 ") a = ManCl
..
我有一个Button类: class Button : public Component { private: SDL_Rect box; void* function; public: Button( int x, int y, int w, int h, void (*function)() ); ~Button(); void handleE
..
我见过将函数指针作为参数接收的函数的以下定义: double fin_diff(double f(double), double x, double h = 0.01) { return (f(x+h)-f(x)) / h; } 我习惯于在此定义中加上星号,即: double fin_diff(double (*f)(double), double x, double h
..
在Stackoverflow中读到一个问题时,我想知道是否可以声明一个接受指向自身的指针的函数。即对foo进行这样的声明,以下内容是正确的: foo(foo); 最简单的想法是强制转换为另一个函数指针(不能强制转换为void*,因为它可能更小),因此函数声明如下: void foo(void (*)()); 虽然这在C中是可以的(并且可以在C++中使用强制转换),但我想知道,是
..
使用函数器和函数指针有什么不同。 例如 //Functor struct add_x { int x; add_x(int y):x(y){} int operator()(int y) { return x+y; } }; //Function int (func)(int x) { return
..
我只是在学习C++中的函数指针。下面的示例都编译并返回预期的结果,但我被告知示例3是可行的。为什么其他示例仍然有效? 还有一件事看起来很奇怪,与上面的例子相比,f,g,h,i并不是所有的例子都有效。与示例1-8相比,它们为什么不起作用? int executeOperator1(int a, int b, int f(int,int)){ return f(a,b); } i
..
我定义了一个指向函数的简单函数指针,当我尝试输出它时,计算结果为1。幕后发生了什么?(我在Mac上,用C++11 g++编译器编译) #include int foo() { return 5; } int main(int argc, char const *argv[]) { int (*fcptr)() = foo; std::c
..
C++20添加了可寻址函数16.5.4.2.1 [namespace.std]/6:--重点是我的-- 让F表示标准库函数([lobal.Functions]),a 标准库静态成员函数,或 标准库函数模板。除非F被指定为 可寻址函数,C++程序的行为未指定 (可能格式错误)如果显式或隐式尝试 指向F.的指针[注意:形成此类指针的可能方法 包括一元&;运算符([expr.unary.op
..
好的,我认为这个标题已经足够描述了(但是令人困惑,抱歉)。 我正在阅读此库:Timer1。 在头文件中,有一个指向如下函数的公共成员指针: class TimerOne { public: void (*isrCallback)(); // C-style ptr to `void(void)` function }; 存在TimerOne类的实例化对象,名为&qu
..
我正在学习C语言,我得到了这个表达式: void *(*routine)(void *) 我觉得这很让人困惑。也许它是一个指针.指向一个指针..。指向指针? 如果我想将这个东西传递到一个函数中,我们应该如何操作它呢?我试图将此例程构造作为参数传递给一个函数,该函数接受void(*)(void).但是我不太明白那到底是什么意思。 推荐答案 void *(*routine)(v
..
为什么以及如何取消引用函数指针只是“什么都不做"? 这就是我要说的: #include无效你好(){ printf(“你好");}诠释主要(无效){(*****你好)();} 来自这里的评论: 函数指针只是取消引用很好,但是结果函数指定人将立即转换回函数指针 从 这里: 取消引用(以您认为的方式)函数的指针意味着:访问一个编码内存,因为它将是一个数据记
..
我最近对 C 中的函数指针有了一些经验. 因此,按照自己回答问题的传统,我决定对基础知识做一个小总结,供那些需要快速深入了解该主题的人使用. 解决方案 C中的函数指针 让我们从一个我们将指向的基本函数开始: int addInt(int n, int m) {返回n+m;} 首先,让我们定义一个指向函数的指针,该函数接收 2 个 int 并返回一个 int: int
..
我正在做一个线性遗传编程项目,其中程序是通过自然进化机制培育和进化的.他们的“DNA"基本上是一个容器(我已经成功地使用了数组和向量),其中包含指向一组可用函数的函数指针.现在,对于简单的问题,例如数学问题,我可以使用一个类型定义的函数指针,它可以指向所有返回一个双精度并且都将两个双精度作为参数的函数. 不幸的是,这不是很实用.我需要能够有一个容器,它可以有不同类型的函数指针,比如一个指向不
..
我需要能够在 C# 中使用 Mono 调用基于函数指针的单个方法.委托为此工作得很好,这是他们的目的,但他们似乎每次我设置委托时分配 52 个字节(不是 +=,而是使用 = 设置它,所以委托引用的方法总是一个且只有一个). 此委托每秒更改多次,它会导致 GC 定期启动,我希望避免这种情况. 我不介意初始内存分配,但有没有办法在我每次更改单个委托值时阻止分配? 如果没有,除了每次更
..
..
在行为良好的 C 程序中,返回语句 (RET) 是否总是返回到 CALL 语句之后的指令?我知道这是默认设置,但我想检查是否有人知道或记得该标准不适用的真实案例(常见的编译器优化或其他事情......).有人告诉我,函数指针可能会发生这种情况(函数指针会将值放在堆栈上,而不是 CALL ......我搜索了它,但我没有在任何地方看到解释). 让我试着更好地解释我的问题.我知道我们可以使用其他
..