假设我有一个简单的复合模式结构:
抽象类
User
叶类
PersonalUser
GroupUser
以std::vector<User*> users
容器为成员变量的复合类
以及如果在容器中找到用户(自然由其他或对象组成)则bool GroupUser::findUser(User* u)
返回的方法true
u
users
PersonalUser
GroupUser
现在,我当然想递归地定义该函数,所以我需要遍历向量中的每个User
,users
并与 进行比较u
,但我不知道是否User
是 aPersonalUser
或GroupUser
,所以我的问题是:
我是否必须定义一个虚拟函数char User::returnType()
来告诉我User
它是哪种类型,或者是否有更好/更智能的方法可以沿着树向下寻找User
?
ps 当然有一种方法bool areEqual(User*, User*)
,我们可以通过它来比较用户:)