微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 递归数据结构的前向声明

当我编写Delphi时,有一个TStringList,它基本上是Delphi通用TObject的字符串映射.使用这种结构,我可以通过将另一个TStringList放在其中一个字符串键上来轻松地创建一个递归的分层结构:

ParentStringList["somekey"] = "just a string value";
ParentStringList["anotherkey"] = SomeChildStringList;

问题是,我如何在C中实现同样的目标?

我现在所拥有的是:

typedef boost::variant< std::string,my_dictionary > my_variant;
typedef std::map < std::string,my_variant > my_dictionary;

……这显然是圆形的.

我可以不在结构中包装东西(我可以转发声明),或者不使用指针(编译器知道其大小)吗?

解决方法

Boost.Variant documentation涵盖了这个确切的案例.如果不使用指针或其他类似的包装器,就无法做到这一点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐