我想在idl文件中写一个枚举为 -
module Media
{
enum eSpeed
{
int speed1 = 2000,
int speed2 = 4000,
int speed3 = 8000
};
};
但是在枚举的情况下,CORBA不允许任何值赋值。如何解决这个问题?
答案 0 :(得分:2)
IDL枚举不能给出值。通常我所做的是将IDL枚举重新映射到我自己在C ++中创建的枚举(可能带有查找表),在我的应用程序代码中使用它之前具有正确的值。换句话说,例如,服务器实现可以在CORBA调用中接收IDL枚举,但随后通过表查找将其映射到具有定义值的内部C ++枚举,然后将其传递给应用程序代码。
如果您不想这样做,可以在IDL中使用常量而不是枚举:
const long speed1 = 2000;
const long speed2 = 4000;
然后,您将在IDL中传递long
而不是eSpeed
作为参数。