| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 610 人关注过本帖
标题:编程中遇到的一个亦易亦难的问题
取消只看楼主 加入收藏
处c
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
编程中遇到的一个亦易亦难的问题
代码如下:
#include <iostream.h>
 // ================= 定义三个类
class Ctest0 {                    // class 0
public:
    void    __cdecl fn0() {
        cout<<"test0"<<endl;
    }
};
class Ctest1 {                    // class 1
public:
    void     __cdecl fn1() {
        cout<<"test1"<<endl;
    }
};
class Ctest2 {                    // class 2
public:
    void    __cdecl fn2() {
        cout<<"test2"<<endl;
    }
};
void main() {
    Ctest0 t0;                    // 实例化三个对象
    Ctest1 t1;
    Ctest2 t2;
    typedef    void (*Fun[3])();
    Fun        f ;                    // 定义一个指针函数数组
    f[0] = t0.fn0;                // !!!编译出错
    f[1] = t1.fn1;                // !!!编译出错
    f[2] = t2.fn2;                // !!!编译出错
    for(int i=0;i<3;i++)        // 通过数组调用个对象中的功能函数
        f[i]();
}
编译出错提示(3个同样的错误):
...cannot convert from 'void (__cdecl Ctest0::*)(void)' to 'void (__cdecl *)(void)'
如果把类中fn0()函数声明中的"__cdecl"去掉。则出错提示如下:
...cannot convert from 'void (__stdcall Ctest0::*)(void)' to 'void (__cdecl *)(void)'

    该程序是实际编程遇到的问题的一个简化。其意图是把各类中相应的功能函数的指针放在一个数组内,以便于程序自动调用运行。这是一种常用的编程手段。但是我始终编译不成功,无法把各类函数的指针装入数组内。
    可是如果这些函数不是类的成员函数(如全局函数),就可以装入指针数组(编译通过并运行正常)。只要是类的成员函数(哪怕这些函数都集中在一个类中)就无法通过编译。出现上面的错误提示。
    此问题困惑我快一周了, c++新手恳请大家指点迷津。先谢过


[ 本帖最后由 处c 于 2010-3-12 13:33 编辑 ]
搜索更多相关主题的帖子: void include 
2010-03-12 13:27
处c
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-3-12
收藏
得分:0 
多谢版主回复~研究ing。。。
2010-03-13 21:00
快速回复:编程中遇到的一个亦易亦难的问题
数据加载中...
 
   



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

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