读书人

有种函数指针不会定义求教,该如何解

发布时间: 2012-03-31 13:13:26 作者: rapoo

有种函数指针不会定义,求教

C/C++ code
#include <iostream>class X{    public:    void f1(){}    static void f2(){}};void f2(){}int main(){    //普通的函数指针技能指向一般的函数,也能指向某个类的静态函数    void (*p1)() = f2;    void (*p2)() = X::f2;    //对一般函数和某个类的静态函数的调用和对一般的函数调用是一样的,都是全局的    p1();    p2();    //我现在想定义一种只能指向  某个类的静态函数  的指针,但是不能指向一般的全局函数    //但是出错    //void (* X::p3)() = f2;     //error C2039: “p3”: 不是“X”的成员    //void (* X::p4)() = X::f2;  //error C2039: “p4”: 不是“X”的成员    //这样定义的话,出错误, 无法指向一般全局函数    //void (X:: *p5)() = f2;    //error C2440: “初始化”: 无法从“void (__cdecl *)(void)”转换为“void (__thiscall X::* )(void)”    //这样定义的话,出错误, 无法指向某个类的静态函数    //void (X:: *p6)() = X::f2;    //error C2440: “初始化”: 无法从“void (__cdecl *)(void)”转换为“void (__thiscall X::* )(void)”    //这样定义的话,语法错误, 用于指向向某个类的非静态函数    //void (X:: *p7)() = X::f1;    //error C3867: “X::f1”: 函数调用缺少参数列表;请使用“&X::f1”创建指向成员的指针    //这样定义的话,能通过, 用于指向向某个类的非静态函数    void (X:: *p7)() = &X::f1;    //但是调用出错, 我知道有个this指针的问题    //p7();    //error C2064: 项不会计算为接受 0 个参数的函数    //这样才可以,但是还是没有实现我想做的。    X xx;    (&xx->* p7)();                  system("pause");    return 0;}




请问 怎么定义 : 一种只能指向 某个类的静态函数 的指针,但是不能指向一般的全局函数







[解决办法]
没可能
[解决办法]

请问 怎么定义 : 一种只能指向 某个类的静态函数 的指针,但是不能指向一般的全局函数

=========

没办法。。。

[解决办法]
做不了。
[解决办法]
static member function就相当于一个global函数啊。

你的问题其实就是,我想写一个pointer to function指向global function但却不指向global function。
[解决办法]
探讨

啊··是真的定义不出来还是

我和你们都不会定义啊?

[解决办法]
指针类型没可能。
自己封装一个private/protected类然后提供访问器理论上应该可行。
[解决办法]
放弃吧孩子

读书人网 >C++

热点推荐