我有以下 CORBA IDL 3.2,它试图声明一个相互递归的结构:
module SE
{
interface SE
{
typedef unsigned short MenuItemID; // a small integer representing a unique menu item
enum MenuSubaction { CollectCharacter, CollectStruct };
struct MenuItemAction; // forward declaration
union MenuSubactionParameter switch (MenuSubaction)
{ case CollectStruct: MenuItemAction sub_structure; // <<<<<<<<< use of forward
};
struct MenuItemAction { MenuSubaction menu_subaction;
MenuSubactionParameter menu_subaction_parameter;
};
}; // interface
}; // module
我收到 Sun JDK 1.7 idlj 在标有 <<<<< 的投诉
... SE.idl (line xx): Illegal reference to incomplete forward declaration of type MenuItemAction.
注意:这不是“前向接口”声明。
什么是“不完整的前向声明”?(如果您成功声明为前向声明,我不会认为前向声明不完整,只是尚未定义。也许这只是一个容易误解的短语)。
更重要的是,我如何设法定义我的递归结构?
我是 CORBA 的新手,所以我真的不知道 :-} 知道我在做什么。我不明白为什么 CORBA 不能定义这样的递归结构;一个传输一个不会递归的特定实例。特别是,它形成了一棵树,对于 CORBA 来说应该是“容易”发送的。
编辑:布赖恩有正确的答案。我需要替换前向引用的直接提及,
MenuItemAction sub_structure
和
sequence<MenuItemAction> sub_structure>