我的代码片段:
void
RMWavefrontFileImporter::loadVertexIntoVector(
const std::vector<std:string> lineElements,
std::vector<const RM3DVertex>* vertices)
{
assert(vertices);
std::unique_ptr<const RM3DVertex> verticeRef = verticeWithElements(lineElements);
const RM3DVertex* vertex = vertexRef.get();
assert(vertex);
vertices->push_back(*vertex);
}
我收到的错误消息:
无法使用“const RM3DVertice *”类型的左值初始化“void *”类型的参数
我没有看到问题。有什么明显的我遗失了吗?
答案 0 :(得分:6)
T
的值类型std::vector<T>
需要是CopyInsertible或MoveInsertible。无论如何,有必要称之为道德等同于
T* tptr = <allocate-memory-over-here-and-make-it-look-like-a-T*>
new(tptr) T(std::forward<Args>(args);
如果T
属于const
类型,则此功能不起作用,例如,因为如果T*
属于void*
,则T
无法转换为X const
形式const
。您想要从std::vector<const RM3DVertice>
删除{{1}}。