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