2013-12-22 42 views
-1

我有一个学生类的列表。在每个学生中都有一个班级成员,它是一个大学班级指针(每个大学班级的基础班级)。在建立清单时,我希望同一所大学的所有学生指出他们大学的同一个实例。C++类实例的地址

有没有办法得到类的实例地址而不直接访问它? 如何检查某个类的实例是否已经构建?

+1

您的课堂名称中有可怕的错字。 – 2013-12-22 07:42:26

+0

你是什么意思? – itzikos

+0

@userXXX这种类型的学校被称为“大学”,而不是“univercity”。 – 2013-12-22 08:33:55

回答

0

您需要知道其包含的类的实例的容器类。因此,要知道是否已经有一个具有特定特征的类的实例,请问容器。容器可以创建一个,如果它不存在或者可以将其留给调用代码。 C++标准库中有许多容器。你可能想要一个unordered_map或者,如果你不想额外的复杂性,一个map

+0

当你说地图时,你的意思是像散列图吗? – itzikos

+0

@ user3126715无序映射是散列映射。地图更像一棵树。 –

0

可以有多种方法来实现这一点,一种简单的方法可以是让大学的构造函数为private,并且具有一个静态函数,该函数需要大学名称(或其他标识符)并返回指向大学类的指针。

该功能可以使用map内部跟踪,如果所大学的名字没有在地图上创建一个新的实例把它放在地图上,并返回它,否则返回现有的实例。

+0

所以,你的意思是我需要扫描我的列表,如果已经有一个univercity的实例,并且如果不启动这样的实例吗? – itzikos

+0

@ user3126715是的,差不多。但是对于扫描列表来检查大学的存在,如果你使用['std :: map'](http://www.cplusplus.com/reference/map/map/),它将会简单而高效。 – Ammar