2013-12-22 41 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