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指针指向数组的两个部分.我如何声明然后初始化它们?
在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)
所以你想要这样的东西:
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)