我有一个简单的递归结构Recursive
,我想用程序需要的值初始化它的 const 数组。然后我将使用一个名为的简单迭代器函数IterateAux
,并在main
. 看代码到现在:
#include <iostream>
#include <string>
struct Recursive
{
std::string data;
Recursive* Children;
};
void IterateAux(Recursive* Item)
{
int i = -1;
while (Item[++i].data != "")
{
std::cout << Item[i].data << "\n";
if (Item[i].Children)
IterateAux(Item[i].Children);
}
}
int main()
{
IterateAux( (Recursive*)Parent );
return 0;
}
现在,如果我有这样的 const 数组,它可以工作:
const Recursive Children[] = {
{"Child1", NULL},
{"Child2", NULL},
{"", NULL}
};
const Recursive Parent[] = {
{"Parent1", NULL},
{"Parent2", NULL},
{"Parent3", Children },
{"", NULL}
};
但以下嵌套形式不会:
const Recursive Parent[] = {
{"Parent1", NULL},
{"Parent2", NULL},
{"Parent3", (Recursive[])
{
{"Child1",NULL},
{"Child2",NULL},
{"", NULL}
}
},
{"", NULL}
};
问题是为什么?我怎样才能让它工作?
在我的调查中,起初我认为.children
指针可能无效,但是当尝试使用int
数据而不是std::string
它时,它可以完美地工作。
随着std::string
数据 GDB 与消息一起崩溃,During startup program exited with code 0xc0000135.
所以我什至无法调试程序!也许数组初始化代码在某处弄得一团糟……
在 GCC 4.6 上尝试了所有这些。