社区
C++ 语言
帖子详情
>>神鬼传奇C++<< 之对象中的函数指针转换?
tgtt
2003-08-24 12:19:00
class C
{
public:
void (*ptst)();
void st();
};
void kk();
void (*ptkk)();
void main(){
ptkk=&kk;//这儿可以
C temp;
temp.ptst=&(temp.st);//为什么这儿就不行了呢?
}
...全文
46
9
打赏
收藏
>>神鬼传奇C++<< 之对象中的函数指针转换?
class C { public: void (*ptst)(); void st(); }; void kk(); void (*ptkk)(); void main(){ ptkk=&kk;//这儿可以 C temp; temp.ptst=&(temp.st);//为什么这儿就不行了呢? }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
widewave
2003-08-24
打赏
举报
回复
搞成静态的,不要 this指针试试。
tgtt
2003-08-24
打赏
举报
回复
哦,那怎么样才能达到转换的目的呢?
class C
{
public:
C(void){
ptst=&st;//这样也不行
}
void (*ptst)();
void st();
};
晨星
2003-08-24
打赏
举报
回复
因为是两个默认的东西你看不到。
void kk();
其实是
void __cdecl kk();
而
void C::st();
实质上是:
void _thiscall C::st();
逻辑上后者比前者多一个参数(this指针),所以不能相互转换。
fengfeng2003
2003-08-24
打赏
举报
回复
多谢 lifanxi(Byron)
lifanxi
2003-08-24
打赏
举报
回复
举个例子:
class A
{
public:
void f() {};
void g() {};
};
int main()
{
void (A::*pf)();
pf = &A::f;
A a;
(a.*pf)(); //相当于a.f();
pf = &A::g;
(a.*pf)(); //相当于a.g();
}
请先理解这个例子,然后就可以推出上面的正确调用方法应该是:
(temp.*temp.ptst)();
或者更清楚一点:
(temp.*(temp.ptst))();
fengfeng2003
2003-08-24
打赏
举报
回复
上面的程序虽然能完成赋值,但如何调用呢?
谁能解释一下
temp.ptst();//error
temp.C::ptst();//error
到底该怎么办!!!
fengfeng2003
2003-08-24
打赏
举报
回复
class C
{
public:
void (C::*ptst)();
void st();
};
void kk();
void (*ptkk)();
void main(){
ptkk=&kk;//这儿可以
C temp;
temp.ptst=C::st;//OK!!!!!
}
ckacka
2003-08-24
打赏
举报
回复
这个标题好炫哦~~
wbh0360
2003-08-24
打赏
举报
回复
steedhorse(晨星)兄说的极是,
这关系到编译器低层的行为,参数的压站等。
2小时精通
C++
智能指针
本课程讲解
C++
11标准库
中
的智能指针。 对于C/
C++
程序员来说,指针是天堂,也是地狱。指针用得好程序运行效率倍增,用得不好问题层出不穷。 智能指针可以解决普通指针存在的悬垂指针、野指针、资源泄露等问题 本教程...
征服
C++
11视频精讲
【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解
c++
的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程
中
常用的一些技能,...
《C经典面试》编译链接、指针、内存bug、函数、其它
指针:指针概念、数组相关的指针、字符串指针、
函数指针
等 3.内存bug:内存越位、内存覆盖、使用非法内存、内存泄露等。 4.函数:自定义函数、内联函数、回调函数、变参函数、递归函数、库函数等 5.其它:自动类型...
<7>精通 S T L(
C++
标准模板库)
STL是Standard Template ...在
C++
程序应用领域,可谓是无所不在,大放光彩。 STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。
C++
零基础入门(
C++
11/
C++
14)
课程共分为三篇: 1) 基础篇: 这部分主要学习零散的基础语法,比如变量、常量、运算符、数据类型、enum、union、 数组、动态数组、字符串、条件结构、循环结构、函数、指针(非常重要)、引用(非常重要, 包括
C++
11...
C++ 语言
64,681
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章