どこにも答えが見つかりません。質問は(?)簡単です。私がそのような機能を持っていると仮定しましょう:
class Sth {
private:
long u;
public:
void set(long u)
{
this.u = u;
}
};
そして私はそれをこのように実行します:
Sth s;
CORBA::Long val = 5;
s.set(val);
これはできますか?すべて大丈夫ですか?
どこにも答えが見つかりません。質問は(?)簡単です。私がそのような機能を持っていると仮定しましょう:
class Sth {
private:
long u;
public:
void set(long u)
{
this.u = u;
}
};
そして私はそれをこのように実行します:
Sth s;
CORBA::Long val = 5;
s.set(val);
これはできますか?すべて大丈夫ですか?
これで問題ないはずです。IBM リファレンス によると、IDL long は-2^31 から 2^31-1の範囲で、サイズは少なくとも 32 ビットです。
ネイティブにlong
C++ に変換する必要があります。標準ではサイズは定義されていませんが、これらの値が保持できる最小範囲が定義されています。はのCORBA::Long
typedef でありlong
、プラットフォーム間で変更される可能性があります。
int_least32_t
(from <stdint.h>
、または)を使用できます<cstdint>
。これは、少なくとも 32 ビット幅であり、適切なコンパイラのネイティブ型に typedef されていることが保証されているネイティブ型です。
これは、使用している IDL から C++ へのマッピングの実装によって異なります。新しい IDL から C++11 へのマッピングでは、IDL の long が int32_t にマップされます。