我有一个学生班级列表。在每个学生中都有一个班级成员,这是一个指针大学班级(每个大学班级的基础班级)。在构建列表时,我希望同一所大学的所有学生指向他们大学的同一个实例。
有没有办法获取类实例的地址而不直接访问它? 如何检查是否已构建某个类的实例?
答案 0 :(得分:0)
您需要一个容器类,它知道它包含的类的实例。因此,要知道是否已经有具有特定特征的类的实例,请询问容器。如果容器不存在,则可以创建一个,或者可以将其留给调用代码。 C ++标准库中有许多容器。您可能需要unordered_map
,或者如果您不想要额外的复杂性,则需要map
。
答案 1 :(得分:0)
可以有多种方法来实现这一点,一种简单的方法可以是使大学的构造函数成为私有,并具有一个静态函数,该函数接受大学名称(或其他标识符)并返回指向大学类的指针。
该函数可以在内部使用map
来跟踪如果大学名称不在地图中,则创建一个新实例将其放入地图并返回它,否则返回现有实例。