C++ 如何在C+;中声明不同大小的数组+;?
我基本上想做这样的事情:C++ 如何在C+;中声明不同大小的数组+;?,c++,arrays,declaration,C++,Arrays,Declaration,我基本上想做这样的事情: Foo one; Foo two; Foo three; Foo **arr[] = { {&one, &two, NULL}, {&one, NULL}, {&one, &two, &three, NULL}, NULL }; 也就是说,我想声明一个以null结尾的数组,其中包含指向特定类实例的指针的以null结尾的数组 这是针对Arduino环境的,因此,new、malloc()和S
Foo one;
Foo two;
Foo three;
Foo **arr[] = {
{&one, &two, NULL},
{&one, NULL},
{&one, &two, &three, NULL},
NULL
};
也就是说,我想声明一个以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++作为非标准扩展。
< P>您是在正确的路径上,但是在核心语言级别,您必须为每个子数组< /P>创建命名数组对象。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++作为非标准扩展。
我知道上面的声明可能是错误的,因为我在这里用英文写的,这就是我要的,正确的声明。我知道上面的声明可能是错误的,我用英文写的,这就是我想要的,正确的声明。哦,该死。这就是我现在得到的,但我试图消除冗余。真的没有更好的办法了,呃?哦,该死。这就是我现在得到的,但我试图消除冗余。真的没有更好的办法了,嗯?