2012-04-27 9 views
0

このコードはC++Javaでポインタ(参照)を使用するにはどうすればよいですか?

void generate_moves(char _board[9], std::list<int> &move_list) { 
    for(int i = 0; i < 9; ++i) { 
     if(_board[i] == 0) { 
      move_list.push_back(i); 
     } 
    } 
} 

で、私はそのようになく、Javaでコーディングしたいです。どうしたらいいですか?

+0

明示的にJavaでポインタを使用することはできません – Rushil

+0

http://www.seas.upenn.edu/~cis1xx/resources/JavaForCppProgrammers/j-javac-cpp-ltr.pdfと多くの多くの... – PeterMmm

+1

[スタックオーバーフローコード変換サービスではありません](http://meta.stackexchange.com/a/129362/148158) –

答えて

2

のJavaへの正確な翻訳がある:

import java.util.ArrayList; 
import java.util.List; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     char[] board = new char[] 
     { 
      'o', 'o', 'o', 
      'x', 'x', 'x', 
      'x', 'x', 'x' 
     }; 

     List<int> moves = new ArrayList<int>(); 
     generateMoves (board, moves); 
    } 

    public static void generateMoves(char[] board, List<int> moves) 
    { 
     for (int i = 0; i < board.length; ++i) 
     { 
      if (board[i] == 0) 
      { 
       moves.add (i); 
      } 
     } 
    } 
} 

Javaでポインタで渡されたすべてのオブジェクトが考慮されているので。あなたが特別にしなければコピーはありません。

+0

お返事ありがとうございます。なぜあなたはchar []を設定しましたか? –

+0

実際、すべてのオブジェクトは値参照渡しです。また、 'char [] board = new char [] {...};'はchar [] board = {...} 'に短縮できます。 –

+0

'int'が' String'になるのはなぜですか? –

2
void generate_moves(char _board[], List<Integer> move_list) { 
    for (int i = 0; i < _board.length; ++i) { 
     if (_board[i] == 0) { 
      move_list.add(i); 
     } 
    } 
} 
+0

+1:私は 'char [] board'を使用します –

+0

@PeterLawrey - おそらく同様です。もちろん、両方のスタイルが機能し、C++のプログラマーは後続の '[]'でより快適になるかもしれません。私はまた、パラメータ名のアンダースコアがOPに何を意味するのか分かりません。 –

0

この場合、Javaの参照は、多かれ少なかれC++ポインタとして機能します。この場合

public void generate_moves(..., List<Integer> move_list) { 
... 
    move_list.push_back(i); 
} 

、 move_listが正確にポインタの例のように働いている参照の上push_backを呼び出します。オブジェクトインスタンスの参照に続いて、メソッドが呼び出されます。

ポインタ演算を使用して配列内の位置にアクセスすることはできません。それはJavaでは単純には不可能です。

+0

Javaリファレンスは、C++の参照ではなく、C++の参照として多かれ少なかれ役立ちます。 –

+0

お返事ありがとうございます。 move_list.pushback()が定義されていないことを知りたいどうして? –

+0

@tedd、ここで概説した違いに基づいて、私は完全に反対しなければなりません。 http://en.wikipedia.org/wiki/Reference_(C%2B%2B) – hvgotcodes

関連する問題