访问指针数组的C++指针声明
C++ pointer declaration to access arrays of pointers
我需要指针声明方面的帮助,我有几个带有指针数组的类,例如
const char* const clsMainWin::mcpszXMLattrRoot[] = {"bottom","left","right","top",NULL};
const char* const clsMainWin::mcpszXMLattrA[] = {"x","y","z",NULL};
我想做的是定义一个指针,它将上面的指针数组分组,允许我用一个索引选择其中一个,例如:
const char* const allOptions[] = {mcpszXMLattrRoot, mcpszXMLattrA};
其中:
allOptions[0][...] would be used to access mcpszXMLattrRoot and its contents:
allOptions[1][...] would be used to access mcpszXMLattrA and its contents
然而,到目前为止,我正在努力使allOptions的声明正确无误。
您可以存储mcpszXMLattrRoot
和mcpszXMLattrA
的指针(即const char * const *
.
const char* const * allOptions[] = {mcpszXMLattrRoot, mcpszXMLattrA};
static const char* const a[] = {"a1", "a2", "a3"};
static const char* const b[] = {"b1", "b2", "b3", "b4"};
static const char* const* const z[] = {a, b};
z
的类型具有额外的*
,因为它是指向char的指针数组的指针数组。
在后一个*
之前需要const
,因为a
和b
是常量。如果没有恒定性,它将是:
static const char* a[] = {"a1", "a2", "a3"};
static const char* b[] = {"b1", "b2", "b3", "b4"};
static const char** z[] = {a, b};
您可以使用constexpr
在类中初始化它
class Foo {
static constexpr const char* const a[] = {"a1", "a2", "a3"};
static constexpr const char* const b[] = {"b1", "b2", "b3", "b4"};
static constexpr const char* const* z[] = {a, b};
};
或类外:
class Foo {
static const char* const a[];
static const char* const b[];
static const char* const* z[];
};
const char* const Foo::a[] = {"a1", "a2", "a3"};
const char* const Foo::b[]= {"b1", "b2", "b3", "b4"};
const char* const* Foo::z[] = {a, b};
这可以通过以下方式实现:
class clsMainWin{
static const char* const mcpszXMLattrRoot[5];
static const char* const mcpszXMLattrA[4];
static const char* const *allOptions[2];
// And other things....
};
const char* const clsMainWin::mcpszXMLattrRoot[] = {"bottom","left","right","top",NULL};
const char* const clsMainWin::mcpszXMLattrA[] = {"x","y","z",NULL};
const char*const * clsMainWin::allOptions[2] = {mcpszXMLattrRoot, mcpszXMLattrA};
相关文章:
- 类的静态结构指针声明在C++
- 函数指针声明
- 指针声明
- 使用无效指针初始化指针声明符的行为是否未定义?
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 指针声明和间接寻址之间的区别
- 是否可以将“自动”关键字用作函数指针声明中使用初始化的返回类型
- 与使用指针声明的字符串和C 中的数组相混淆
- 如何在C 中使用不同数据类型的类模板指针声明指针
- 指向STD :: vector,指针声明
- 为什么我们不能泛化指针声明?
- C 返回类型指针声明
- 将结构指针声明为函数的返回类型
- C++ h 和 cpp 文件中的指针声明冲突
- 为什么或何时用指针声明int
- 如何将函数指针声明指向模板函数,其返回类型取决于模板类
- 如何将方法指针声明为Typedef方法参数
- 通过参考或指针声明属性C
- C 指针声明
- 指针声明基础(多维数组指针的赋值)