2015-05-25 73 views
-3

這是我完全缺少的一些基本方面。我有包含對象的一組基本的C++動態分配問題

PropertyContainer::PropertyContainer(string comFile, string resFile) 
{ 
    set<Property*>* prCont = new set<Property*>(); 
... 
} 

在我主我打電話

PropertyContainer* ptrPropertySet = new PropertyContainer(comFile, resFile); 

此構造經過,並填充集從文件中的數據。

如果(當我仍然在構造函數中),我遍歷所有的屬性在那裏。

如果我回到main()並訪問set,它是空的(我通過accessor函數完成了它,並暫時將它公開並直接訪問它,以確認我沒有犯過錯誤訪問函數)

這使我相信有一個非常基本的編程原理我錯過了。任何幫助或鏈接將不勝感激。

+3

你正在定義一個局部變量'prCont',它隱藏你的成員變量。動態分配'std :: set'是非常罕見的,你可能不應該這樣做。 – molbdnilo

+1

爲什麼你需要所有這些指針?爲什麼'prCont'必須是一個指針? –

+0

* facepalm *非常感謝你@molbdnilo請讓這個答案,所以我可以選擇它作爲正確的一個:) – Xeke

回答

0

您正在定義一個局部變量prCont,它隱藏了您的成員變量。

動態分配std :: sets是非常罕見的,你可能不應該這樣做。
如果您聲明成員爲set<Property*> prCont,那麼當您創建PropertyContainer時,它將自動默認構造。