使用基类调用派生类

calling derived class using base class

本文关键字:派生 调用 基类      更新时间:2023-10-16

以下是我的代码,它根据布尔·伊萨德敏(Boolean Isadmin(创建新的用户或新的管理对象。用户对象是从此派生的基本对象。我希望能够像用户功能一样使用user->adminClasshere。我不确定如何更改它,因此用户=新管理员会创建管理员而不是用户。

User *user;
if (isAdmin)
{
    user = new Admin();
}
else
{
    user = new User(userLib); //call constructor
}
//User User;
user->loadLibrary();
user->displayLibrary();

您将多态性与类扩展混合在一起。
在课堂扩展中,您不能像已经发现的那样使用指针来与扩展课程一起工作。
使用多态性,派生类具有相同的接口,但实现了不同,因此您只需调用基类的功能,并且使用虚拟函数时将将其派遣到实际类的函数。

解决方案是不执行的:如果您有管理用户,请将其视为单独的用户,并且不要假装它只是具有一些额外功能的普通用户。

不是解决方案,而是解决方法是将用户指针投入到所需类型并使用新指针。但是,仅在真正需要时才使用此。