关于C++的嵌套类,嵌套类里面含有纯虚函数,且被继承,主函数如何调用的问题

请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。#include"stdio.h"classA//A中嵌套B{public:c... 请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。
#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;
}
因为不熟悉,所以写错了,大家引以为戒~
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
xtwgigu2
推荐于2016-05-10 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:54
采纳率:0%
帮助的人:76.7万
展开全部
void C::A::B::operate() //纯虚函数实现部分
{
printf("C 实现虚函数 operate()后的输出");
}

这个是A里面的嵌套类B的operate的实现,并不是C里面的operate的实现。相当于:

class A //A 中嵌套 B
{
public:
class B //嵌套类B 重点!
{
public:
virtual void operate()=0 { printf("C 实现虚函数 operate()后的输出"); } // B类中有纯虚函数!!!!
};
};

所以你 C里面的operate()并没有实现。只需另外加上实现即可:
void C::operate() //纯虚函数实现部分
{
printf("Drive output\n");
}
追问
你写的好乱。。。。。其实回答问题突出重点就好了,感谢你的回答。。。。我的问题解决了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式