我无法在任何地方找到答案。问题是(?)简单。我们假设我有这样的功能:
class Sth {
private:
long u;
public:
void set(long u)
{
this.u = u;
}
};
我按照这样运行:
Sth s;
CORBA::Long val = 5;
s.set(val);
我可以这样做吗?一切都会好吗?
答案 0 :(得分:1)
这应该没问题。 According to the IBM reference,IDL long的范围为 -2 ^ 31至2 ^ 31-1 且至少32位。
它应该在c ++中原生地转换为long
。标准没有定义大小,但定义了这些值可以容纳的最小范围。 CORBA::Long
是long
的typedef,可能会在平台之间发生变化。
答案 1 :(得分:1)
您可以使用int_least32_t
(来自<stdint.h>
或<cstdint>
),这是一个保证至少32位宽的本机类型,并且对相应的编译器本机进行typedef类型。
答案 2 :(得分:1)
这取决于您正在使用的IDL到C ++映射的实现。在新的IDL到C ++ 11中,将IDL映射中的长映射映射到int32_t。