更改派生对象中的基础对象

时间:2017-04-29 14:31:46

标签: c++ inheritance

在我的一个班级GUI中,我有一个班级User u的私有变量。在这个GUI类中,我有一个用户登录的功能,然后检查他们的帐户是管理员还是普通用户,然后从中创建UserAdmin对象。 Admin来自具有更多权限的用户。如何在设置登录后将私有变量User u设置为Admin对象或User对象。

1 个答案:

答案 0 :(得分:-2)

如果Admin类正在扩展User类,那么您可以使用User u来表示它们。

如果您只需要管理员,并且您不知道uAdmin还是User对象,您可以在运行时检查它:

if(Admin * v = dynamic_cast<Admin*>(u)) {
   // u was safely casted to Admin
   v->doSomething();
}  

<强> N.B。 dynamic_cast是一项费用很高的操作,您可以阅读here一些解决方法。