使用基类调用派生类
calling derived class using base class
以下是我的代码,它根据布尔·伊萨德敏(Boolean Isadmin(创建新的用户或新的管理对象。用户对象是从此派生的基本对象。我希望能够像用户功能一样使用user->adminClasshere
。我不确定如何更改它,因此用户=新管理员会创建管理员而不是用户。
User *user;
if (isAdmin)
{
user = new Admin();
}
else
{
user = new User(userLib); //call constructor
}
//User User;
user->loadLibrary();
user->displayLibrary();
您将多态性与类扩展混合在一起。
在课堂扩展中,您不能像已经发现的那样使用指针来与扩展课程一起工作。
使用多态性,派生类具有相同的接口,但实现了不同,因此您只需调用基类的功能,并且使用虚拟函数时将将其派遣到实际类的函数。
解决方案是不执行的:如果您有管理用户,请将其视为单独的用户,并且不要假装它只是具有一些额外功能的普通用户。
不是解决方案,而是解决方法是将用户指针投入到所需类型并使用新指针。但是,仅在真正需要时才使用此。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 使用 std::variant<...时调用 BaseState 函数而不是派生函数>
- QWidget::p aintEngine:不应再在 QTreeWidget 派生类中调用
- 调用从模板派生的类的静态方法,而不指定模板
- 调用派生类成员函数
- 从基类实例调用派生类方法而不进行强制转换
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 从 c++ 中派生类的析构函数调用虚函数
- 从基类 (C++) 调用派生类中的非虚函数
- 调用不在基类中的派生类函数而不进行动态强制转换,以最大程度地提高性能
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何从 Gtk::窗口调用派生对象的析构函数
- 在dynamic_pointer_cast后调用派生类的构造函数
- 如何使派生类函数在调用时始终调用相同的基类函数?
- C++初始化之前派生类调用基类的方法
- 为什么派生类的实例从基类调用方法?
- 从 Base 引用对象调用派生类的成员
- 使用回调函数从构造函数调用虚拟/派生方法的替代方法?
- 基函数中的公共函数,当使用派生对象通过另一个基函数调用时,派生调用基函数