社区
界面
帖子详情
高手快帮忙啊
34539890
2004-05-05 03:24:36
我将我自己设计的两个不同类的实例都存进了CObArray,我现在要将他们读出来进行各自的Draw()函数,但CObArray返回的只是一个CObject基类指针,要进行强制转换,但怎么转换成各自的类型呢?
...全文
63
11
打赏
收藏
高手快帮忙啊
我将我自己设计的两个不同类的实例都存进了CObArray,我现在要将他们读出来进行各自的Draw()函数,但CObArray返回的只是一个CObject基类指针,要进行强制转换,但怎么转换成各自的类型呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
菜牛
2004-05-08
打赏
举报
回复
父类的虚函数成员没有实例,只是定义了指向子类实现了虚函数的指针。
34539890
2004-05-08
打赏
举报
回复
解决了,通过多态,谢谢大家了
不过小弟我有一点疑问
int main(int argc, char* argv[])
{
CBase* pFoo = new CA();
pFoo->Draw();//这里先调用父类的draw,而后调用子类的draw,是吗?
delete pFoo;
}
ygzdev
2004-05-08
打赏
举报
回复
楼上的m_nbutton和m_nframe有关系吗?
不管怎么样,要么强制指针转换,要么多态,要么自己编写函数(获取类名,不同的类名调用不同的函数)
34539890
2004-05-08
打赏
举报
回复
是这样的,我有两个类:TurnButton和Frame,他们是我自己编的com控件,我在Document中实例化几个对象,并无规则的存入CObArray中,现在要在view中显示界面,即要调用各自的Draw()函数
for(int i=0;i<pDoc->Get_array()->GetSize();i++)
{
TurnButton *m_nbutton=(TurnButton *)pDoc->Get_array()->GetAt(i);
m_nframe->Draw(pDC);//调用相关的draw函数
}
但此时只是调用TurnButton的Draw()函数,我想写一个通用的,而不光是TurnButton或者是Frame一个的Draw()函数,怎么实现呢?
海阔天空的创业与创作
2004-05-07
打赏
举报
回复
像一楼那样,用虚函数来实现多态,这样可以避免强制类型转换
(基类->派生类 的转换会出现切割问题,要避免)
mjk
2004-05-07
打赏
举报
回复
用虚函数进行多态设计
jazy
2004-05-07
打赏
举报
回复
你这个问题应该用多态来解决啊,再合适不过了
cmx98
2004-05-07
打赏
举报
回复
同意楼上的
_foo
2004-05-07
打赏
举报
回复
如果是你想在一个循环中来调用Draw的话,可以这样用虚函数来解决.
#include <process.h>
#include <iostream>
using namespace std;
class CBase
{
public:
virtual void Draw()=0;
};
class CA:public CBase
{
public:
void Draw(){
cout<<"CA::Draw"<<endl;
}
};
class CB:public CBase
{
public:
void Draw(){
cout<<"CB::Draw"<<endl;
}
};
int main(int argc, char* argv[])
{
CBase* pFoo = new CA();
pFoo->Draw();
delete pFoo;
system("pause");
return 0;
}
_foo
2004-05-07
打赏
举报
回复
如果你的类名是CFoo那么就是((CFoo*)pobj)->Draw();//pobj是从CObArray返回的CObject基类指针...
有何疑问?
34539890
2004-05-07
打赏
举报
回复
怎么没人帮我啊?
我疯啦!
快
帮帮我吧!
高手
帮忙
!怎么将数据库中的sum(合计)的值取出来?
高手
帮忙
谢谢!...
高手
帮忙
!怎么将数据库中的sum(合计)的值取出来?
高手
帮忙
谢谢! Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061221102432192.html 下面这段程序! self.Query1.Close; self.Query1....
急需
高手
帮忙
快
快
了。写完后可以发到我的邮箱14lch32@sina.com,谢谢 具体要求如下: 每个员工的信息包括:编号,姓名,性别,出生年月,学历,职务,电话,住址等。实现对员工信息的查询,更新。插 入,删除等功能。 1.录入:...
java lang ill_请MATLAB
高手
帮忙
我的MATLAB老出现以下东西,这些东东还刷的挺
快
,不按ESC都不停止.java.lang.Ill...
请MATLAB
高手
帮忙
我的MATLAB老出现以下东西,这些东东还刷的挺
快
,不按ESC都不停止.java.lang.Ill请MATLAB
高手
帮忙
我的MATLAB老出现以下东西,这些东东还刷的挺
快
,不按ESC都不停止.java.lang.IllegalArgumentException:...
oracle 数据分列,oracle怎么按照范围分列!求
高手
帮忙
.
求
高手
帮忙
...数据表如图,按照范围分为小于45KG,45-100KG之间100-300KG之间300-500KG之间,500-1000KG之间各为一列,怎么划分!用decode,sum,sign......。请
高手
指点!------最佳解决方案--------------------加上...
高手
大家
帮忙
啊!看看这个值怎么取出来判断?
高手
大家
帮忙
啊!看看这个值怎么取出来判断? Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061225142811116.html self.LJBQuery.Close; self.LJBQuery.SQL.Clear; self.LJBQuery.SQL....
界面
15,980
社区成员
115,867
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章