社区
界面
帖子详情
高手快帮忙啊
34539890
2004-05-05 03:24:36
我将我自己设计的两个不同类的实例都存进了CObArray,我现在要将他们读出来进行各自的Draw()函数,但CObArray返回的只是一个CObject基类指针,要进行强制转换,但怎么转换成各自的类型呢?
...全文
98
11
打赏
收藏
高手快帮忙啊
我将我自己设计的两个不同类的实例都存进了CObArray,我现在要将他们读出来进行各自的Draw()函数,但CObArray返回的只是一个CObject基类指针,要进行强制转换,但怎么转换成各自的类型呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
怎么没人帮我啊?
高手
快
帮忙
,关于replace和正者表达式的问题
我想把我获取到的HTML里的所有的所有的<a href="替换成<a href="default2.aspx?str=,但是里面有双引号,想问一下怎么用正者表达转换啊看下面代码 1usingSystem;2usingSystem.Data;3usingSystem.Configuration;4usingSystem.Collections;5usingSyste...
Python数字货币量化初探
目前来看, 高频交易:开发投入资源太大,或许会失效,投入产出比不太好(据说),先不做。 选币交易:仅仅牛市有效,牛市追涨,收益惊人 期现套利:交易规则,?? 跨期套利:高风险,高收益,高复杂,助教爆仓?? 接下来,我将会通过BOLL策略,来学习这个量化,似乎是唯一一个上手
快
,比较靠谱的了。 ...
我一个文科生想转行IT,为什么大部分人向我推荐软件测试
其次,地域分布最后,人群分布(年龄比例和性别比例)相信看了上面的百度大数据的结果,你心里已经有了自己的想法。那么我来聊下为什么把这三个职业对比分析。最直接的原因,上手
快
,技术含量较低(相对编程),薪资高。从上面的第一个图:兴趣分布就能看出,搜索软件测试的人群几乎分布在各行各业,竞争力大;从上面的第二个图:地域分布,这个地域分布并不是每个地域对软件测试的真实需求,如果你在某个地域例如广东想要从事软件测试,那么你的竞争压力要大于其他地域。从上面的第三个图:人群分布,年龄比例不想多说,自己参考就可以。
c4d阿诺德渲染器支持a卡吗_OC、红移……C4D的那些渲染器到底有什么区别!
写在前面之前写过“如何高效学习C4D”中曾提到过如何渲染器的问题,不过仅仅只提到过OC和红移,其实C4D的常用渲染器远不止这两种,常见的还有vray渲染器、阿诺德渲染器、Cycles 4D渲染器、Krakatoa等等。今天我们就来聊聊那些C4D的渲染器们~渲染器目录渲染器OC渲染器 红移(Redshift)渲染器vray渲染器阿诺德渲染器Cycles 4D渲染器Krakatoa以上...
AI绘画如何变现?小白上手指南来啦(附教程和工具)
如果你是真正有耐心想花功夫学一门技术去改变现状,我可以把这套AI教程无偿分享给你,包含了。
界面
15,976
社区成员
115,866
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章