我是C++的新手,所以仍然在學習指針並習慣於使用它們。保持對象和引用在函數內創建的對象
我已經聲明瞭一個對象映射,以便存儲用戶稍後可能使用該標記鍵訪問的對象。
map<string,MyObject*> myMap;
我加入到MYMAP對象在一個由我主
void myFunction(){
...
MyObject obj1();
MyObject* objPtr;
objPtr = &obj1;
myMap.insert(pair<string,MyObject*>("xxxx", objPtr));
...
}
當我執行此功能的對象的指針是完全插入到MYMAP,但功能執行後調用函數創建我猜我失去了對obj1的引用,因爲指針和對象是在函數內部本地創建的,所以我在地圖中仍然有一個元素「xxx」,但是我認爲它是後面的空引用。
如何保持全局對象和引用?我想在函數中創建這個對象,因爲它有一些需要從用戶obj1(m,n)中獲取的可變參數。謝謝你的幫助。
爲什麼你不能在地圖中存儲對象的任何原因?這將大大簡化事情。 – juanchopanza
爲什麼不使用'objPtr = new MyObject();'而不是'MyObject obj1(); objPtr = &obj1;'?這會在堆上創建超出函數範圍的對象。但是,在完成對象和地圖的使用後,需要刪除對象。在你的例子中,該對象在堆棧上創建並在函數完成後刪除。 – MKroehnert
你可能想了解'new'關鍵字。 –