如何在C++中声明不同大小的数组数组?
问题描述:
我基本上想要做这样的事情:如何在C++中声明不同大小的数组数组?
Foo one;
Foo two;
Foo three;
Foo **arr[] = {
{&one, &two, NULL},
{&one, NULL},
{&one, &two, &three, NULL},
NULL
};
也就是说,我要声明一个空空的终止阵列终止指针数组到一个特定的类的实例。
这是针对Arduino环境,所以new
,malloc()
和STL不可用。
答
您是在正确的道路上,但在核心语言水平,你将不得不为每个子阵列
Foo one;
Foo two;
Foo three;
Foo *row0[] = { &one, &two, NULL };
Foo *row1[] = { &one, NULL };
Foo *row2[] = { &one, &two, &three, NULL };
Foo **arr[] = { row0, row1, row2, NULL };
(根据需要添加const
预选赛)命名的数组对象。
在C你必须复合文字功能,将允许你做的正是你有什么在你的版本
Foo **arr[] =
{
(Foo *[]) { &one, &two, NULL },
(Foo *[]) { &one, NULL },
(Foo *[]) { &one, &two, &three, NULL },
NULL
};
但它是一个特定的C-功能,在C++中不存在。你可能想要检查你的编译器是否支持C++作为非标准的扩展。
+0
哦,该死的。这就是我现在得到的,但我试图消除冗余。真的没有更好的方法,呃? – 2014-09-25 22:01:20
我知道上面的声明可能是错误的,因为我用英文写了这些,这就是我要求的,正确的声明。 – 2014-09-25 21:51:56