4

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

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

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

4

1 回答 1

2

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

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

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

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

于 2013-04-12T19:11:35.490 回答