读书人

error C2243: #039;type cast#039; : conversi

发布时间: 2012-02-19 19:43:39 作者: rapoo

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++规定的。比较复杂。

读书人网 >Symbian

热点推荐