请问有什么办法在已知基类的指针能访问继承类的成员函数吗?

kingcy 2003-08-16 05:42:58
高手能给个思路吗?
例如一个应用类的指针Application app*
子类 class SubApp: public Application
SubApp *myapp;
如何使app指向myapp?

...全文
48 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtu 2003-08-16
  • 打赏
  • 举报
回复
可能使我没明白你的意思。

指针是什么类型关系并不是很大,因为指针可以转换。
关键是你的对象是什么类型的,转换不当会出问题。

subApp* myapp = new subApp;
app = dynamic_cast<Application>myapp;
app->
.....
没有问题。
如果下面这样:
Application* app = new Application;
myapp = dynamic_cast<subApp>app;
//抛出异常

app->


oopig 2003-08-16
  • 打赏
  • 举报
回复
使app指向myapp就很简单:app = myapp;
用基类的指针访问子类的成员函数不是不可以,但是必须保证基类指针指向的确实是子类对象,而且这样很危险,不推荐使用。代码如下:
#include <iostream>
using namespace std;

class A
{
};

class B : public A
{
public:
void Hello()
{
cout << "hello" << endl;
}
};

int main()
{
B b;
A *pA = &b; //必须保证基类指针指向的是子类对象
B *pB = static_cast<B*>(pA); //把基类指针转换成子类指针
pB->Hello();
return 0;
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧