专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Symbian

error C2243: 'type cast' : conversion from 'class CTeacher *' to 'class CBa

发布时间:2010-05-30 00:32:19 文章来源:www.iduyao.cn 采编人员:星星草
error C2243: 'type cast' : conversion from 'class CTeacher *' to 'class CBase *' exists, but is inaccessible
error   C2243:   'type   cast '   :   conversion   from   'class   CTeacher   * '   to   'class   CBase   * '   exists,   but   is   inaccessible

我在编译时出现了这个错误
for(i=0;i <numberOfTeacher;i++)
{
CTeacher*   tea=CTeacher::NewL(readTeaStream);
CleanupStack::PushL(tea);
flat2-> AppendL(*tea);
CleanupStack::Pop(tea);
}

前面的定义是
static   CStudent*   NewL(TDes&   aName,TInt32   aNo,TInt32   aScore);
static   CTeacher*   NewLC(TDes&   aName,TInt32   aNo,TInt32   aScore);
~CStudent();
static   CTeacher*   NewL(RReadStream&   aStream);
static   CTeacher*   NewLC(RReadStream&   aStream);


CArrayFixFlat <CTeacher> *   flat1=new(ELeave)CArrayFixFlat <CTeacher> (4);

把//CleanupStack::PushL(tea);

//CleanupStack::Pop();
注销掉可以编译但是不能运行
这里一个压栈出栈在别的地方也经常用,怎么会有问题呢
是不是其他代码的问题呢
初学Symbian   ,大家多多指教阿

------解决方案--------------------
1. CTeacher要从CBase派生
2. CArrayFixFlat <CTeacher*> * flat1 = new (ELeave) CArrayFixFlat <CTeacher*> (4);
flat1-> AppendL(tea);
最好把继承关系列一下
------解决方案--------------------
呵呵。楼上说的应该不是正解。楼上的,看一下cleanupstack的pushl接口,除了cbase*之外还有tany*,也就是说,如果不从cbase上继承来的指针,也可以push进去。比如char*的野指针。

楼主的问题,我猜测,是多重继承了cbase,也就是说,你从多个c类继承来的。

楼主,是否可以把cteacher类的声明帖一下。

class cteacher : public cbase,应该是这样的。还有一些构造函数。也牵扯到这种复制。这是c++规定的。比较复杂。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: