【问题标题】:How to specify enum field values in CORBA如何在 CORBA 中指定枚举字段值
【发布时间】:2013-04-04 20:24:43
【问题描述】:

我想在 idl 文件中写一个枚举为 -

module Media 
{
enum eSpeed
{
    int speed1 = 2000,
    int speed2 = 4000,
    int speed3 = 8000
};
};

但是 CORBA 不允许在枚举的情况下进行任何赋值。如何解决这个问题?

【问题讨论】:

    标签: corba


    【解决方案1】:

    IDL 枚举不能被赋予值。通常我所做的是将 IDL 枚举重新映射到我自己在 C++ 中制作的枚举(可能使用查找表),该枚举在我的应用程序代码中使用它之前具有正确的值。换句话说,例如,服务器实现可能会在 CORBA 调用中接收 IDL 枚举,然后通过表查找将其映射到具有定义值的内部 C++ 枚举,然后将其传递给应用程序代码。

    如果您不想这样做,您可以在 IDL 中使用常量而不是枚举:

    const long speed1 = 2000;
    const long speed2 = 4000;
    

    然后,您将传递 long 而不是 eSpeed 作为 IDL 中的参数。

    【讨论】:

    • 不,布赖恩,不知何故,要求是我必须使用枚举。是否建议从 idl 编辑生成的文件?那我怎么查。我会很感激一个小例子!
    • 如果有人建议您将 IDL 手动编辑到 C++ 或 IDL 到 Java 代码,那么他们做错了。
    • 用您的目标语言创建您自己的枚举。我假设您使用的是 C++。在您的应用程序中使用此枚举。当您通过 CORBA 接收数据时,您只需将 IDL 枚举转换为您的 C++ 枚举。一种方法是使用查找表。另一种方法是使用 switch 语句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多