2

我的代码片段:

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 *”类型的参数

我没有看到问题。有什么明显的我失踪了吗?

4

1 回答 1

6

Ta的值类型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*ifT是形式的转换X const。你想conststd::vector<const RM3DVertice>.

于 2013-08-31T23:09:18.400 回答