c – 父类成员函数的函数指针
发布时间:2020-12-16 09:31:14 所属栏目:百科 来源:网络整理
导读:我一直在尝试理解C中的函数指针,以便我可以在我的一个项目中成功使用它们.我遇到了逻辑问题.假设我们有两个类:父类和继承父类的子类. class Parent{ ...other stuff void (Parent::*ptr2func) (); ...other stuff}; 然后我们有一个子类: class Child : pub
我一直在尝试理解C中的函数指针,以便我可以在我的一个项目中成功使用它们.我遇到了逻辑问题.假设我们有两个类:父类和继承父类的子类.
class Parent{ ...other stuff void (Parent::*ptr2func) (); ...other stuff }; 然后我们有一个子类: class Child : public Parent{ ...other stuff void afunc(); ...other stuff }; 我想将父类的指针连接到子类的afunc()函数.在子类的构造函数中,我尝试这样做: Child::Child() { ptr2func = &Child::afunc; } 这返回了一个预期的错误: 我担心会发生这样的事情.但是我该如何克服这个呢?我不能将父类的成员函数的函数指针链接到子类的成员函数吗?正如您所理解的那样,我试图通过函数指针实现多态性,仅用于实验而不使用虚函数.我一直相信这是可能的.我的错是什么?或者它是不可能的? 解决方法
void(Parent :: *)()接受Parent类型的对象.函数Child :: afunc需要Child类型的对象.因此,将指针转换为void(Parent :: *)()将允许无效调用.
成员函数指针实际上不能用于实现多态.在不使用virtual的情况下实现多态的传统方法是使用常规函数指针: struct MyBaseClass { void (*function)(MyBaseClass* this_pointer); }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容