1

一部のコードをC++からJavaに変換しています。次の疑問がある-

  1. C++-静的文字**gprs; Javaの場合-privatestaticString [] gprs; またはプライベート静的バイト[]gprs;

  2. C ++-static char * mask; Javaの場合-プライベート静的バイトマスク。(正しい?)

  3. C ++-memset((char *)&rm、'\ 0'、sizeof(DRMK)); //ここでDRMKは構造体です。rmはDRMKのオブジェクトです。したがって、Javaではクラスを作成する必要があり、変数を宣言するときに、個々の値を0に設定する必要があります。それは正しいですか?

  4. C ++-memcpy(&wp、(PMSK *)p_msk +(long)(x-1)、sizeof(PMSK)); これをJavaでミラーリングする方法。PMSKはここの構造体です。
    そしてここで-静的PMSKwp; PMSK * pm; static char * p_msk;

ありがとう

4

3 に答える 3

2
  1. private static String[] gprs;
  2. private static String;//ここに文字列を入れてもかまいませんが、完全にはわかりません-コンテキストによって異なります。
  3. 単にrm = new DRMK();
  4. これは、PMSK構造の構造によって異なります。文字列からオブジェクトへのデータコピーを意味的に行うメソッドを作成する必要があります。
于 2011-05-16T13:08:29.827 に答える
1
  1. gprsに使用されているかによります。自動ソリューションはありません。しかし、それがキャラクターの場合は、String[] より適切なようです。

  2. 繰り返しますが、それはどのようmaskに使用されているかに依存します。または 。Byte[]_String[]

  3. 何も必要ありません。nullJavaは、コンストラクターを呼び出す前に、すべてのメンバー変数を自動的に0、または道徳的に同等のものに設定します。

  4. コードを正しく理解している場合は、Javaクラスのコピーコンストラクターを提供して呼び出す必要があります。

于 2011-05-16T13:07:02.970 に答える
1
C++ - static char **gprs;

gprsの使用にもよりますが、(コードの残りの部分を見ると)byteより適切だと思います。であるバイト配列。

C++ - static char *mask;

「マスク」という名前の文字ではなく、バイトを使用します。

C++ - memset((char *)&rm,'\0',sizeof(DRMK)); 

他の回答で述べられているように...新しいDRMKインスタンスを作成する必要があります。

C++ - memcpy (&wp, (PMSK *)p_msk + (long)(x - 1), sizeof(PMSK)); 

あなたが私に尋ねれば、これはビット単位のマスクです。の値はwp、の先頭から(x-1)バイトのメモリ位置にあるものになりますp_msk。基本的にsizeof(PMSK)、p_msk +(x-1)で始まるサイズのメモリのチャンクをwpにコピーします。Javaでそれを行う方法は?あなたはそれを推測しました...バイト配列。

于 2011-05-16T14:49:48.243 に答える