我正在使用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;
}
答案 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());