Const指向指针数组的指针

Yol*_*ola 2 c++ pointers const

我有这堂课

struct A {
    A();
    Item*  m_Items[ON_CPU + ON_GPU];
    Item** m_ItemsOnCpu;
    Item** m_ItemsOnGpu;
};
Run Code Online (Sandbox Code Playgroud)

我需要初始化

m_ItemsOnCpu到m_Items

m_ItemsOnGpu到m_Items + ON_CPU

所以我需要const指针指向数组的两个部分.我如何声明然后初始化它们?

Car*_*rum 5

在C++ 11中,您可以这样做:

struct A {
    A();
    Item*  m_Items[ON_CPU + ON_GPU];
    Item** const m_ItemsOnCpu = m_Items;
    Item** const m_ItemsOnGpu = m_Items + ON_CPU;
};
Run Code Online (Sandbox Code Playgroud)

在其他版本的C++中,使用初始化列表:

struct A {
    A() : m_ItemsOnCpu(m_Items), m_ItemsOnGpu(m_Items + ON_CPU) {};
    Item*  m_Items[ON_CPU + ON_GPU];
    Item** const m_ItemsOnCpu;
    Item** const m_ItemsOnGpu;
};
Run Code Online (Sandbox Code Playgroud)


Pau*_*ans 5

所以你想要这样的东西:

struct A {
    A(): m_ItemsOnCpu(m_Items), m_ItemsOnGpu(m_Items + ON_CPU) {};
    Item*  m_Items[ON_CPU + ON_GPU];
    Item** const m_ItemsOnCpu;
    Item** const m_ItemsOnGpu;
}
Run Code Online (Sandbox Code Playgroud)