首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确分配性病::向量

正确分配性病::向量
EN

Stack Overflow用户
提问于 2019-03-21 22:43:55
回答 1查看 136关注 0票数 0

我在将std::向量给另一个类时遇到了问题。我将数据放入std::vector中,并将其放入一个名为"Mesh“的类中。“网格”就变成了“模型”。

代码语言:javascript
复制
// Store the vertices
std::vector<float> positionVertices;

positionVertices.push_back(-0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back( 0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back(-0.5f);
positionVertices.push_back( 0.5f);

// Put them into a mesh and the mesh into a model
Mesh mesh = Mesh(positionVertices);
Model model = Model(mesh);

在模型类中,我获取网格的位置顶点,并将其转换为float[]。但是看起来,我分配std::向量的方式是错误的,因为当检查模型类中的std::向量时,它的大小为0。

代码语言:javascript
复制
// Store the vertices
float* dataPtr = &data[0];
glBufferData(GL_ARRAY_BUFFER, data.size() * sizeof(float), dataPtr, GL_STATIC_DRAW);

如何将数据正确地导入到其他类中?

我也不确定mesh类的构造函数是如何工作的。救世主:

代码语言:javascript
复制
// Mesh.h
class Mesh
{
public:
    std::vector<float> positionVertices;

    Mesh(std::vector<float>);
    ~Mesh();
};

Mesh.cpp:

代码语言:javascript
复制
// Mesh.cpp
Mesh::Mesh(std::vector<float> positionVertices) : positionVertices(Mesh::positionVertices)
{
}

模型h:

代码语言:javascript
复制
// Model.h
class Model
{  
public:
Mesh mesh;
unsigned int vertexArray;
unsigned int vertexCount;

Model(Mesh);
~Model();

void storeData(std::vector<float> data, const unsigned int index, const unsigned int size);
};

Model.cpp:

代码语言:javascript
复制
// Model.cpp
Model::Model(Mesh mesh) : mesh(Model::mesh)
{ ... }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 23:05:09

代码语言:javascript
复制
// Mesh.cpp
Mesh::Mesh(std::vector<float> positionVertices) :
positionVertices(Mesh::positionVertices) // Here's the problem
{
}

初始化程序列表中的positionVerticesMesh::positionVertices,所以您要将它赋值给自己。

使用

代码语言:javascript
复制
positionVertices(positionVertices)

另外,改变

代码语言:javascript
复制
Mesh::Mesh(std::vector<float> positionVertices) :

代码语言:javascript
复制
Mesh::Mesh(const std::vector<float>& positionVertices) :

所以你不会做不必要的矢量拷贝。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55290328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档