1
1
实际上,您需要的是一个move inputilator,用于插入输出。由于C++中不存在这种情况,因此需要一种替代方法来表示“浅”的移动,而不是“深度”的拷贝。 对象本身中的简单状态标志不起作用,因为允许实现在实际将对象放入容器之前随机复制对象。(为了优化起见,您知道这不会,但是不用担心调试构建是很好的。) 在我脑子里,这听起来像是一个自定义分配器的工作。默认分配器使用placement new复制构造函数;您可以定义一个备用构造函数,并使用placement new调用它。
当然,将状态添加到BlitSurface到
路过
|
2
0
上面提到了正在调用一个复制构造函数。在提供的示例中,容器似乎定义为容纳BlitSurface。类似于std::vector<BlitSurface>。这是我从以下几行猜出来的:
我的理解是,所有std容器将在插入时制作一份副本。从那时起,您可以通过引用使用容器中的对象。如果您不希望在BlitSurface上调用复制构造函数,那么我建议容器存储指向BlitSurface的指针。这样,当容器在插入时进行复制时,它实际复制的对象是指针(而不是指向的BlitSurface对象)。
请记住,这种方法在堆(即新)上分配内存,因此以后必须显式删除内存,或者可以在容器中使用某种类型的智能指针来处理删除操作(std::vector<boost::shared\ptr<BlitSurface>)。 |
laxantsu · Docker Swarm覆盖网络上的端口转发 6 年前 |
achahbar · kubernetes吊舱被困在集装箱建造中 6 年前 |
Tims · 从群集节点上的docker卷曲到主节点 6 年前 |
Dannyu NDos AJF · 通用容器转换?是否从可折叠到备用? 6 年前 |