在结构中获取std :: vector的地址

时间:2014-08-16 22:22:55

标签: c++ stdvector

我正在使用DirectX,我想访问在结构中定义和分配的顶点std :: vector。

struct Mesh
{
 std::<vector> mVertices;
}

我想获取第一个元素的地址

vinitData.pSysMem = m_Mesh.m_Vertices[0];

我尝试过以上这一行,但它根本不起作用。

我唯一的解决方法是将顶点复制到另一个std:vector然后将其分配给pSysMem并且这样可行。

通过这样做:

std::vector<VertexAttribute> vertices(m_Mesh.m_Vertices.size());
    for (size_t i = 0; i < m_Mesh.m_Vertices.size(); ++i)
    {
        vertices[i].Pos = m_Mesh.m_Vertices[i].Position;

    }

2 个答案:

答案 0 :(得分:1)

operator[]返回引用,而不是指针。 使用:

vinitData.pSysMem = &m_Mesh.m_Vertices[0];

BTW,我假设您使用std::vector<Vertix>

答案 1 :(得分:1)

你可以通过陈述:

来得到它
vinitData.pSysMem = &(m_Mesh.m_Vertices[0]);

或者如果您的编译器支持C ++ 11:

vinitData.pSysMem = const_cast<Vertix*>(m_Mesh.m_Vertices.data());