C++将数组创建与函数分开的问题

C++ issue separating array creation from function

本文关键字:问题 函数 数组 创建 C++      更新时间:2023-10-16

一段时间后,我开始使用c ++进行一些directx编程,但我遇到了一个看似愚蠢的问题。我有一个缓冲区,当前正在使用内联创建的数组:

Vertex vertices[]={{...},{...},...};

此数组用作创建缓冲区的资源。我遇到的问题是我想从函数中检索这个数组,因为我想创建不同的结构,这些结构不是在创建缓冲区的方法中硬编码的。但是,如果我做类似 Vertex* vertices=getDefaultVertices() 的事情,其中 getDefaultVertices() 的定义是 Vertex* getDefaultVertices() 并返回我上面的结构将不起作用。现在,通过环顾四周,我发现问题的一部分是您无法在 c++ 中创建本地函数数组并返回对它的引用。我的问题是我应该怎么做才能检索这个数组?我唯一能想到的就是使用带有常量的类,但我想知道一个解决方案,如果可能的话,它使用函数来检索数组。

呢:

vector<Vertex>& defaultVertices()
{
    static vector<Vertex> defVtx;
    if(defVtx.size() == 0)
    {
        // declare your vertices one after the other:
        defVtx.push_back(Vertex(0.1f,0.2f,0.3f));    // first Vertex
        defVtx.push_back(Vertex(0.1f,0.2f,0.3f));    // second Vertex
    }
    return defVtx;
}

这样你就有一个顶点向量,它将始终相同,它将在内存中创建一次。 我不知道这在多任务处理方面有多安全(很可能在第一次调用和同时从不同线程调用后续调用时可能存在赛车条件)。

我知道这不是一个好的解决方案,但它现在应该适合你的需求......