请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。
#include "stdio.h"
class A //A 中嵌套 B
{
public:
class B //嵌套类B 重点!
{
public:
virtual void operate()=0; // B类中有纯虚函数!!!!
};
};
class C:public A::B,A // 也可以单独继承A::B
{
public:
void A::B::operate(); //派生类对基类纯虚函数进行声明,若不声明,C也为抽象类
};
void C::A::B::operate() //纯虚函数实现部分
{
printf("C 实现虚函数 operate()后的输出");
}
int main() //operate()函数调用 有问题!
{
C *c; //问题:C *c=new C(); c->operate(); 编译出错
c->operate(); // C c ; c.operate(); 编译出错
// C *c; c->operate(); 编译不出错,运行报错,未初始化
}
请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。
问题已解决:
给网友们看下,遇到问题可以解决下:
#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(); 问题1
};
void C::operate() //operate实现部分,被实现了就不是纯虚函数了 问题2
{
printf("C 实现虚函数 operate()后的输出\n");
}
int main()
{
C *c = new C();
c->operate();
return 0;
}
因为不熟悉,所以写错了,大家引以为戒~
你写的好乱。。。。。其实回答问题突出重点就好了,感谢你的回答。。。。我的问题解决了。
本回答被提问者采纳