×

指针调用类的函数

指针调用类的函数(类中函数指针调用函数)

admin admin 发表于2024-06-06 15:56:10 浏览18 评论0

抢沙发发表评论

各位老铁们,大家好,今天由我来为大家分享指针调用类的函数,以及类中函数指针调用函数的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

类中函数指针调用函数

你把head从函数里面拿出来,作为参数就可以了啊。之前需要定义一个函数指针:typedef struct _Node (*Fun)(struct _Node *p);然后定义show函数:void show(Fun fun, struct _Node *head){ struct _Node *pTemp = NULL; pTemp = fun(head);}这样就可以把head传进来了~希望对你能有所帮助。

怎样在类中通过指针来实现成员函数调用成员函数

错误是因为“函数”和“成员函数”是有区别的,“成员函数”是属于一个特定的类的,普通的函数不是。所以说compute函数的参数是一个接受0个参数,没有返回值的“普通的函数”,而你传的参数show是属于类A的“成员函数”。写成下面这样就可以通过编译了void compute(void (A::*p)()){}void AA(){ compute(&A::show);}

关于空类指针为什么可以调用类的成员函数

class MyClass{public:int i;void hello(){printf("hello/n");}void print(){printf("%d/n", i);}};void main(){MyClass* pmy = NULL;pmy-hello();}看上面的这段代码,似乎很诡异。 用一个空指针调用成员函数,简直是天大的错误,可以遗憾的是,却是可行的,至少对于上面的这段程序来说,不会照成错误。之前运行的原因。大家知道,每个对象,都有一个指向自己的this指针,这个指针的值,将会因为对象的不同而不同,它的作用主要就是用来区分不同的对象,这样你就可以根据它

如何在A类中使用函数指针调用B类中的函数

typedef void (*FuncPtr)(void);class A{public: FuncPtr ptrFunc1; FuncPtr ptrFunc2; FuncPtr ptrFunc3;};class B{public: //函数必须定义成静态的 static void Func1() { printf("Func1() in class B called.\n"); } static void Func2() { printf("Func2() in class B called.\n"); } static void Func3() { printf("Func3() in class B called.\n"); }};int main(){ A AObject;//定义A类的对象 B BObject;//定义B类的对象 AObject.ptrFunc1 = (FuncPtr)BObject.Func1; AObject.ptrFunc2 = (FuncPtr)BObject.Func2; AObject.ptrFunc3 = (FuncPtr)BObject.Func3; AObject.ptrFunc1(); AObject.ptrFunc2(); AObject.ptrFunc3(); getchar(); return 0;}

C++两个类如何通过指针相互调用对方的函数

交叉引用一般有两种方法class B ;class A{ B* pb ; void funA() ;} ; class B{ A* pa ; void funB() ;} void A::funA() { pb-》funB() ; } // warning of infinite loop herevoid B:: funB() { pa-》funA() ; } // warning of infinite loop here这是最常见的方式------------------------------------------------但上面方式有个严重的缺陷, 必须要把类的定义和实现分开.这就意味着,你不能类的实现放在.h中(并被多个.cpp包含), 不然就等着编译器在链接时抱怨"符号重定义"因为类的定义作用域是单模块, 而函数的定义是扩模块的.我平时写类库, 最怕的就是为个.h要写个.cpp,文件,太繁琐. 所以可以使用方法2template《 class B 》class A{B* pb ;void funA() { pb-》funB() ; } // warning of infinite loop here} ; class B{ A* pa ;void funB() { pa-》funA() ; } // warning of infinite loop here}这种C++ idiom虽然说要让A引入策略B做为模板参数, 有些"做作"但是交叉引用这种设计很多时候隐含着, 你的class A确实需要依赖策略B中的语义.所以模板并不是单纯解决"双重引用"这个机制而诞生的, 而是class A在概念上对于策略B的自然依赖. 只是策略B除了用class B初始化, 还可以用其他类初始化

基类指针可以指向一个派生类,然后调用派生类里的函数吗

基类指针与派生类指针的相互转换1,直接用基类指针引用基类对象2,直接用派生类指针引用派生类对象3,用基类指针引用一个派生类对象,由于派生类对象也是基类的对象,所以这种引用是安全的,但是只能引用基类成员。若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态性)

在c++中,如何定义利用指针将一个类的函数运用到另外一个类中

用组合就可以呀,如下所示:

class A{public:    int CalcZhouChang()    {        ...    }        int CalcDiMianJi()    {        ...    }};class B{public:    int CalcBiaoMianJi()    {        return m_a.CalcDiMianJi() * m_a.CalcZhouChang();    }    private:    A            m_a;};

如何用函数指针来调用类的成员函数,求高手解答

成员函数是类才拥有的函数, 函数指针跟其他指针区别并不大,都是指针,它作为函数指针指向一个函数时,就当作函数的另一个名字访问即可

类中函数指针调用函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于类中函数指针调用函数、类中函数指针调用函数的信息别忘了在本站进行查找哦。