我正在尝试从我的基类的对象访问派生类的方法。我有一个抽象类的基类,CBase
class CBase{
protected:
char path[255];
public:
virtual void StartBackup()=0;
void setpath(char * path)
{
strcpy(this->path,path);
}
virtual void afunc()
{
printf("Base\n");
}
};
现在两个类 Ctype1 和 Ctype2 是从 CBase 派生的类
class CType1:public CBase{
public:
void StartBackup()
{
printf("Type1:%s",path);
}
void afunc()
{
printf("CType1:afunc\n");
}
void myfunc()
{
printf("myfunc\n");
}
};
class CType2:public CBase{
public:
void StartBackup()
{
printf("Type2:%s",path);
}
void afunc()
{
printf("type2:afunc\n");
}
void typefunc()
{
printf("typefunc\n");
}
};
我有一个 CManager 类,它有一个 CBase 类的对象作为它的成员,
class CManager{
private:
CBase * obj;
public:
CManager(){
obj = NULL;
}
~CManager(){
if(obj)
delete obj;
obj = NULL;
}
void inittype(int type)
{
if(type == 1)
{
obj = new CType1();
obj->myfunc();
}
else
{
obj = new CType2();
obj->typefunc();
}
}
};
在 void inittype(int type)
函数中,我将输入作为类型并相应地初始化 CBase 对象。
我面临的问题是,在创建对象后,当我尝试访问或myfunc
出现编译错误时。我如何访问这些函数(我不想在基类中创建这些函数)?typefunc
编辑 :
我得到的错误是,
- 'myfunc' : 不是'CBase' 的成员
- 'typefunc' : 不是'CBase' 的成员
谢谢