请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。 void C::A::B::operate() //纯虚函数实现部分 // C *c; c->operate(); 编译不出错,运行报错,未初始化 请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。 |
|
class C :public A::B, A { public: void operate() override; }; void C::operate() { printf("C 实现虚函数 operate()后的输出"); } 加A::B干嘛 |
|
不管是 A::B还是::A,这不是重点,那是当时测试时改的。。。。我现在想去调用实现的纯虚函数,但是出错,请帮帮忙改下这里吧,其他的小毛病就暂且绕过吧。
|
|
不管是 A::B还是::A,这不是重点,那是当时测试时改的。。。。我现在想去调用实现的纯虚函数,但是出错,请帮帮忙改下这里吧,其他的小毛病就暂且绕过吧。 |
|
10分 |
你这代码写的很奇葩。。。
修改如下,编译运行通过 #include "stdio.h" class A { public: class B { public: virtual void operate()=0; }; }; class C : public A::B { public: void operate(); //这里继承父类的operate不用写成void A::B::operate(); }; void C::operate() //operate实现部分,被实现了就不是纯虚函数了 { printf("C 实现虚函数 operate()后的输出\n"); } int main() { C *c = new C(); c->operate(); return 0; } |
谢谢你啊~~万分感谢~~~因为不熟悉,一直被这一块问题困扰,原谅我的贪心哈~还是想问您下:
#include “stdio.h” class A { public: class B { public: virtual void operate()=0; }; B* GetB(); //问题在这里,我怎样才能获得嵌套类的指针,因为它本身是 嵌套抽象类 }; //后面又被继承,我想获得B的指针该怎么办?参数任意填写,有办法吗 class C : public A::B { public: void operate(); //这里继承父类的operate不用写成void A::B::operate(); }; 我怎样才能获得嵌套类B的指针???参数大侠来定义下吧 |
|
刚才说的不太准确,C类继承了B类,怎样通过GetB()获得继承了B的指针,即,获取C类指针后再强制转化为B类的。。。拜托大侠了。。。。。
|
|
拜托大侠再帮帮忙,实在太穷了,没有多少分了。。。。 |
|
5分 |
没完全读明白你的疑问,看看这是你需要的不: #include "stdio.h" class A { public: class B { public: virtual void operate()=0; }; public: B* GetB() { return m_b; } void SetB(B* b) { m_b = b; } private: B* m_b; }; class C : public A::B { public: void operate(); //这里继承父类的operate不用写成void A::B::operate(); }; void C::operate() //operate实现部分,被实现了就不是纯虚函数了 { printf("C 实现虚函数 operate()后的输出\n"); } int main() { A a; a.SetB(new C()); A::B *b = a.GetB(); b->operate(); return 0; } |
5分 |
建议你还是去巩固一下C++类相关的基础知识,系统的学习一下,会少走很多弯路!
|
恩,好。。。。。。会的,谢谢你哈,我顺道加你关注。。。。。感谢你的回答~ |