| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 911 人关注过本帖
标题:如何输出成员函数的地址??高手指点!无人能解吗???????
取消只看楼主 加入收藏
youlong699
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-3-30
收藏
 问题点数:0 回复次数:3 
如何输出成员函数的地址??高手指点!无人能解吗???????

如何将一个类中(或其对象)的函数的入口地址输出??
一下为本人测试的一个程序,通不过编译!!
#include <iostream.h>
class A
{
public:
void (*p)();
A(){p=f1;} //出错!!!!
private:
void f1() {cout<<"a^^^^^^^"<<endl;}
};
void main()
{
A a;
cout<<a.p<<" A::f1"<<endl;

}
错误:
error C2440: '=' : cannot convert from 'void (__thiscall A::*)(void)' to 'void (__cdecl *)(void)'
There is no context in which this conversion is possible
执行 cl.exe 时出错.

[此贴子已经被作者于2007-4-11 12:21:52编辑过]

搜索更多相关主题的帖子: 函数 成员 地址 输出 
2007-04-10 19:08
youlong699
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-3-30
收藏
得分:0 
2007-04-11 12:22
youlong699
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-3-30
收藏
得分:0 
回复:(wfpb)void (__thiscall A::*p)();这样可以吗...
我直接将 void (*p)();换成void (__thiscall A::*p)();,结果如下了:
E:\SourceFiles\testFunction.cpp(5) : error C4234: nonstandard extension used : '__thiscall' keyword reserved for future use

其实我做这个程序的目的在于观察对象中各个成员在内存中的组织形式,也就是想看看类的不同对象之间有哪些是关联在一起的,或者说想搞清是通过地址调用共享一部分成员,还是给每个对象都开辟内存生成变量和函数。
2007-04-11 22:10
youlong699
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-3-30
收藏
得分:0 
回复:(wfpb)void (__thiscall A::*p)();这样可以吗...
This is the default calling convention used by C++ member functions that do not use variable arguments. The callee cleans the stack, so the compiler makes vararg functions __cdecl, and pushes the this pointer on the stack last. The thiscall calling convention cannot be explicitly specified in a program, because thiscall is not a keyword.
2007-04-12 12:26
快速回复:如何输出成员函数的地址??高手指点!无人能解吗???????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015379 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved