• 締切済み

クラス型の配列の引数指定

x[ ] point = new x[ 6 ]; for ( int i = 0; i < 6; i++ ) { point[ i ] = new x( ); } このようにクラス型配列をnewした場合、xの引数を指定するにはどうすればよいのでしょうか? 複数のコンストラクタを用意して、場合分けをしたいのですが。

  • Java
  • 回答数2
  • ありがとう数0

みんなの回答

回答No.2

x[0] = new Point2D( 1, 1 ); x[1] = new Point2D( 3, 2 ); x[2] = new Point2D( 2, 1 ); x[3] = new Point2D( 4, 1 ); x[4] = new Point2D( 2, 4 ); x[5] = new Point2D( 3, 3 ); 1,1とか3,2って引数に何か規則はあるのでしょうか? 無いならそのままベタで書くしかないと思いますけど。

回答No.1

質問の意図がよーわからんのですが、コンストラクタを複数用意できればいいのかな? X[] point = new X[6]; for ( int i = 0 ; i < 6 ; i ++){ if ( i % 2 == 0 ){ point[i] = new X(); } else { point[i] = new X(i); } } classX public class X { public X(){ System.out.println("x"); } public X(int arg){ System.out.println(arg); } }

eques130
質問者

補足

確かにわかりにくかったです。すみませんでした。 x[0] = new Point2D( 1, 1 ); x[1] = new Point2D( 3, 2 ); x[2] = new Point2D( 2, 1 ); x[3] = new Point2D( 4, 1 ); x[4] = new Point2D( 2, 4 ); x[5] = new Point2D( 3, 3 ); のように、forでnewした後に、それぞれ引数を指定する方法をおねがいします。

関連するQ&A

  • C++関数の仮引数について

    関数の引数に配列を指定したいのですが たとえば、 double* point[4]; void setPoint(double _point[]) { for(int i = 0; i < 4; i++){ point[i] = (_point + i); } } int main(void) { setPoint((double[])(1.0, 2.0, 3.0, 4.0)); } '型キャスト' : 'double' から 'double []' に変換できません。 とエラーが出てしまいます。 どのようにすればよいでしょうか?

  • クラス型配列を同じクラス内関数の引数に使えますか?

    今ゲームを作成中です。クラス型の配列を引数で渡して その関数内でメンバの値を変えたいと思っています。 下記のような記述を試してみたのですがエラーは出ませんが 配列が関数内で参照できず思うようにいきません。 同じクラス内でクラス型の配列は使えないのでしょうか? その場合どのようにすれば配列でクラス内メンバの値を 保持すればよいでしょうか?ご回答お願いします。 #define Block_Max (100) Block* B Block* BB[] void main(){   for(int no=0; no < Block_Max; no++){     B->Block_Test(no,BB);   } } Block::Block_Test(int no,Block* BB[]){   BB[no]->B_Test_F = true; }

  • 引数で指定された配列の要素数の取得

    どうもこんにちは。 C言語でプログラムを作成しています。 ある関数に配列を渡すことを考えていますが、渡した配列の要素数を取得する方法は何かありますか? 標準の関数を見ても、配列の先頭アドレスのポインタとともに、配列の要素数を渡しているものばかりで、配列のポインタを渡しているものは見かけません。 要素数があらかじめわかっていれば、それを引数の型に指定できますが、呼び出されるまで不明な場合はうまくいきません。 配列の要素数も引数として一緒に渡す必要がありますか? [作ってみたサンプル] #include <stdio.h> #include <stdlib.h> #include <string.h> // func1 と func2 をまとめられないだろうか。。。 void func1(int (*p)[10]) { ________int n = sizeof(*p) / sizeof((*p)[0]); ________int i; ________for (i = 0; i < n; i++) { ________________printf("%d\n", (*p)[i]); ________} ________printf("\n"); } void func2(int (*p)[5]) { ________int n = sizeof(*p) / sizeof((*p)[0]); ________int i; ________for (i = 0; i < n; i++) { ________________printf("%d\n", (*p)[i]); ________} ________printf("\n"); } int main(int argc, char *argv[]) { ________int ary1[10] = { 2, 4, 6, 8, 0, 1, 3, 5, 7, 9 }; ________int ary2[5] = { 3, 6, 9, 12, 15 }; ________func1(&ary1); ________func2(&ary2); ________return 0; }

  • javaのメソッドの引数で、クラスの配列を指定する

    javaのメソッドの引数で、クラスの配列を指定する事は可能なのでしょうか? 受け取るメソッドでは引数の所に何と書けば良いのでしょうか? 教えてください!

    • ベストアンサー
    • Java
  • 派生クラスを含む配列について

    VisualStudio.NETの開発経験があまり無い者です。 WEBサービスを使った開発をするのですが、 対象のメソッドの引数に、特定のクラスの配列を指定するようになっているのですが、 実際にこの引数には、そのクラスの派生クラスのいずれかが入るような感じになっています。 例:ABC(X[]) 引数Xは基底クラスの配列。でもここにはXの派生クラスYやZなどが入る このような場合の実際の指定方法がわかりません。 どのようにしたらよいのでしょうか?

  • C#で、引数にクラスの配列の参照パラメータを渡したい

    C#始めて3日目ですが、そろそろ挫折しそうです。 以下のクラス class Test{ int num; public Test(){ num = 0 }; ~Test(){}; public void set(int n){ num = n; } public int get(){ return num; } } があり、 void kakikae(Te [] t){ for(int i =0; i < 10; i++){ t[i].set(i); } } Test [] test = new Test[10] = { new Test, new Test, new Test, new Test, new Test, new Test, new Test, new Test, new Test, new Test }; kakikae(test); とした時に、test[0]からtest[9]まで 1,2,3,4,5,6,7,8,9 の値が入っている事がしたいのです。 要は、クラスの配列のポインタを渡して、相手側の関数で書き方内容が、関数から戻った時も値渡しでなく 参照渡しのように値が変わって戻ってきて欲しいです。 配列の仕組み、クラスの仕組み、パラメータの仕組みが 分からず、ここから進みません。 1から勉強できるC#の参考書も探しています。

  • 引数のオブジェクト

    C++のクラスを引数にするとき、そのコンストラクタがオーバーロードされている場合、その引数のところにオーバーロードされているパターンの型を指定できるのでしょうか? また、引数があるクラスで、そのクラスのコンストラクタに更に別のクラスが指定されている場合に、そのクラスのコンストラクタにその指定ができるのでしょうか?

  • メソッドの引数にクラス配列を指定した場合…?

    問題のソースの構造を簡略化して書きます。 class superA { } class subB extends superA { } class mainC { public static void main(String[] abc) { /* superAとsubBをインスタンス化して 利用。int変数に値を入れている。 */ } } class questionD { public static int EEE(superA[] FFF) { } } クラスmainCまではなんの問題もなく理解もできますし、ちゃんと動くのですが、問題はクラスquestionDで 指定されている上のメソッド(int EEE(superA[] FFF))でmainCで代入されたsuperAやsubBの変数の値を使って、その和を返せ というものなんですが まず引数にクラス配列を指定してる場合、どのようにしてmainCで呼び出せばいいのでしょうか? また、どのようにしてquestionDでsuperAやsubBのint変数を利用すればいいのでしょうか? 教えてください。よろしくお願いします。 まだjavaをはじめて間もないので間違った言葉の使い方や意味の不明な点がありましたら補足要求でお願いします。

    • ベストアンサー
    • Java
  • 2次元配列とポインタの引数受け渡しについて

    2次元配列を関数に渡すときは、引数に渡す2次元配列と同じサイズを指定、もしくは2次元目のサイズのみ合わせて渡す方法がありますが、両方とも違うサイズで同じ関数を使いたいです。 最初は中身が同じで引数で受け取る2次元配列のサイズだけ、それぞれに合わせた引数を持つ関数を2つ作っていたのですが、なんだか冗長な気がしました。 そこで、2次元配列の先頭ポインタとサイズを受け取るようにすればいいのかと思い、テストとして次のプログラムを作成してみました。 #include <stdio.h> void func(unsigned char *a, int y, int x); int main(void) { unsigned char a[10][10]; func(a, 10, 10); printf("%d\n", a[7][4]); return 0; } void func(unsigned char *a, int y, int x) { int i, j; for (i = 0; i < y; i++) { for (j = 0; j < x; j++) { *(a + i*y + j) = i * j; } } } もちろんこれでも動くのですが、やはりこういう書き方はルールにはないので、コンパイルで警告が出ます。 a.c: In function ‘main’: a.c:10: warning: passing argument 1 of ‘func’ from incompatible pointer type a.c:4: note: expected ‘unsigned char *’ but argument is of type ‘unsigned char (*)[10]’ このような書き方はやはりやめたいいのでしょうか。 また、その際はサイズ別に関数を作るしかないのでしょうか。 他にいい方法があれば教えていただけると助かります。

  • 配列クラスのクラス名

    配列クラスのクラス名 配列クラスのクラス名を教えてください。 配列はクラスですよね。そこまでは分かります。 こんなコードを実行しましたが System.out.println((new int[0]).getClass()); System.out.println((new boolean[0]).getClass()); System.out.println((new String[0]).getClass()); System.out.println((new Integer[0]).getClass()); 親切にこのような結果を出力してくれます。 class [I class [Z class [Ljava.lang.String; class [Ljava.lang.Integer; 結果として配列が何というクラスなのかは分かりません。 (もしかして『[I』『[Z』『[L』という名前のクラスでしょうか?) 昔Javaのソースを読んだときに、配列クラスのファイルも 読んだことがあるような気がするのですが、 なんと言うクラスだったか忘れてしまいました。 パッケージ名+クラス名を教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう