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

C++ issue separating array creation from function

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

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

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

怎么样:

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;
}

这样你就有了一个顶点向量,它总是相同的,并且会在内存中创建一次。我不知道关于多任务处理的安全性如何(很可能在第一次调用和同时从不同线程进行后续调用时可能存在竞争条件)。

我知道这不是一个好的解决方案,但它现在应该能满足您的需求...