Я новичок в 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'. –