从现有指针C 创建一个新对象
Create a new object from existing pointer C++
我一直在寻找答案,但仍然无法弄清楚。
对不起,但是我的工作太复杂了,无法在此处复制示例代码。
我有一个函数,该函数将指针作为参数;我使用它,但是以后,我需要一种回调,我想在其中使用旧的尖头对象。
问题是,当调用此回调时,指针已经被删除或释放。我的想法是在堆上复制尖头对象,并在回调完成后将其释放。但是我在指针,复制构造函数和其他东西之间迷路了。解决方案可能很简单,但是我被卡住了。
如果您有T * p
,则可以制作一个新对象:
T x(*p);
或,如果您必须(但请严重,不要!),一个动态分配的对象:
T * q = new T(*p);
不要使用第二表。您诱人的头痛没有结局。
假设您具有T
类型,并且假设ptr
当前是有效的指针,则指针T* ptr;
,那么T* ptr2 = new T(*ptr);
应该在t上调用COPY构造器以在堆上创建新的指针。现在,这要求您的类型T
具有正确编写的复制构造函数和destructor等。
另一种做法的方法:
MyObject* pointerFromOld;
...
MyObject newObject = *pointerFromOld;
在指针之前的星号返回指向的对象(将地址的内容解释为对象),同时将该对象分配给newObject进行复制。
我刚刚找到了这个:C 成语/虚拟构造函数
相关文章:
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- 有没有一种方法可以从函数中返回一个新对象或对现有对象的引用
- 如何异步销毁对象并立即分配一个新对象
- 我可以制作一个对象方法,如果单独调用,它将自行修改,但如果在复制初始化期间调用,则会返回一个新对象?
- 我应该如何在这个房间中创建一个新对象 - opengl
- C++如何为向量中的每个元素创建一个新对象?
- 从指针参考C 创建一个新对象
- 我如何从数组中创建一个新对象,该数组在C 中保存不同的对象
- 从现有指针C 创建一个新对象
- 按值返回不会创建一个新对象
- 如何从NanAsyncWorker返回一个新对象
- 将现有对象传递给构造函数或构造一个新对象
- 每次创建一个新对象或保留一个对象
- 创建一个新对象并传入方法参数
- 我应该清除作为参数传入的()容器,还是交换一个新对象
- 用C++实例化一个新对象
- 是基元铸造,在内存中创建一个新对象
- 在cpp中实例化一个新对象
- 在头文件中分配一个新对象
- 在函数中创建一个新对象-C++