2013-12-05 3 views
0

У меня есть объект, называемый кубом, и у меня есть вектор вершин внутри него. В моем основном проекте DX11 я создаю D3D11_SUBRESOURCE_DATA, чтобы создать буфер вершин. Когда я создаю субресурс, мне нужно ссылаться на такой вектор:Доступ к указателям внутри объектов

subresourcedata.pSysMem = & vertices;

Но теперь, когда вершины находятся в объекте, я не уверен, как это сделать (cube.vertices не то же самое), должен ли объект быть указателем, поэтому я могу использовать -> вместо. ссылаться на них или есть простой способ сделать то, что я делаю, используя обычные объекты?

Благодаря

+2

Вы должны опубликовать небольшой фрагмент кода, который иллюстрирует вашу проблему лаконично. –

ответ

3

Просто добавьте аксессора в класс, чтобы выставить вершины как указатель. Таким образом, предполагая, что у вас есть Vertex структуру, что-то вроде:

class CMyCube 
{ 
    // ... blah blah 

public: 
    const Vertex* GetVertices() const { return &m_pVertices[0]; } 

    // ... blah blah 

private: 
    std::vector<Vertex> m_pVertices; 
}; 

Тогда вы можете сделать:

pSubResource.pSysMem = pSomeCubeInstance.GetVertices(); 
+0

Отлично, спасибо – user1157885

0

Вы можете перегрузить оператор &.

class cube 
{ 
public: 
    vertices* operator&() const { return &_vertices[0]; } 

    std::vector<vertices> _vertices; 
}; 

Тогда вы можете сделать это:

куб с;

subresourcedata.pSysMem = & c;

Смежные вопросы