一个有关于类名+::+函数名的问题
时间:2011-12-16
来源:互联网
我简单的说,具体是这样的
先有这么一个类:
class A
{
double m_recieve;
public:
A();
~A();
int f(double p_rec);
void g();
}
int A::f(double p_rec)
{
m_recieve = p_rec;
return 0;
}
void A::g()
{
h(handle, xxxx, &A::f);
// 此处的h函数是一个在库中定义的,然后他的第一个参数是个句柄,第二个参数无所谓
// 关键是第三个参数,他使用了这个类A中的f函数,但是没有写参数列表
// 但是当我朋友在f函数中,想给A的成员变量赋值时,编译器报错。
}
补充一句,我朋友在f函数里手动做赋值 m_recieve = 10.0;也不行,于是我进行了自己的推测。
以下是我个人的推测,这里写成&A::f,是不是有静态函数的味道,这样f就是相对于所有类而不是某个特定的对象,所以才不能给成员变量赋值呢?
仅仅是个人的推测。
希望高手能解答下,顺便帮我解释下这里为什么要写成&A::f这样的形式,先谢谢各位了
作者: arenapal 发布时间: 2011-12-16
作者: dyangrun 发布时间: 2011-12-16
类的普通成员函数的指针
作者: pathuang68 发布时间: 2011-12-16
函数参数中般会有 A的对象,对象+类成员函数指针 完成回调的。
作者: Demon__Hunter 发布时间: 2011-12-16
h(handle, xxxx, &A::f);
函数参数中般会有 A的对象,对象+类成员函数指针 完成回调的。
有个问题,既然有了A的对象,为什么在f中给A的私有成员赋值时,会出错呢?
作者: arenapal 发布时间: 2011-12-17
作者: arenapal 发布时间: 2011-12-18
h函数h(handle, xxxx, &A::f(A*double))仅供参考
作者: li_hai 发布时间: 2011-12-18
作者: greatliudy123 发布时间: 2011-12-18
作者: arenapal 发布时间: 2011-12-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28