发布网友 发布时间:2022-05-01 04:28
共2个回答
热心网友 时间:2023-10-09 09:09
static void myGaussianBlur(int, void *);
//函数声明里的形参可以不写,只要定义时参数类型不变就不算重载,仍是一个函数
createTrackbar("Kernel: ","Gaussian", &iGaussianBlur, 40, myGaussianBlur);
//这句是把函数地址当作参数传入,是函数指针的用法,没有什么问题
static void myGaussianBlur(int, void *)//函数定义没有形参?还能这么写?
//有些时候形参只是个象征意义,比如重载++运算符里就是这种写法
//这个函数实现回调,但是没有严格按照回调的参数调用,应该在其他地方有全局变量srcImage, dstImage3等,所以不用形参也可以。
typedef void(*TrackbarCallback)(int pos, void* userdata);//不知道这是什么东东
//这就是声明函数指针类型的方法,去查查函数指针这么用就清楚了
下面写了一个例子,也是用的全局参数,没通过形参传入
#include <iostream>追问第一次知道可以这么用……
有个函数指针的疑问:
一般都是直接定义:
bool (*pf)(const string &, const string &);
没有看到过
typedef bool (*pf)(const string &, const string &); 这种类型……
typedef void (*ADDFUN)(int&);
前面的typedef是不是多余的?
追答bool (*pf)(const string &, const string &);
//上面定义后,pf只能说他是一个变量也就是pf=xxx;
加了typedef,pf就是一个类型
pf f1;f1=xxx;
int n=0; //相当于就是int和n的区别
热心网友 时间:2023-10-09 09:09
在哪看到这段代码,为什么认为它是正确的……