我是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'关键字。 –