|
请各位帮忙看下,嵌套类的虚函数继承时如何调用,以及派生类中对嵌套类的虚函数实现过程是否正确。 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++类相关的基础知识,系统的学习一下,会少走很多弯路!
|
恩,好。。。。。。会的,谢谢你哈,我顺道加你关注。。。。。感谢你的回答~ |
|