1

現在、「float myIDs」として定義された配列を持ついくつかのクラスがあります。変数を親クラスに移動し、ポインター ('float * myIDs') に変更したいと考えています。

現在、私はその値を次のように宣言しています:

float myIDs[] = {
    //Variables
};

現在はポインターなので、ほぼ同じになると思いました。

myIDs = new float[] = {
};

しかし、それは機能していないようです。これまでこのようなポインター配列を宣言する必要がなかったため、これを解決する方法がわかりません。

誰でも私を助けてもらえますか?

ありがとう

4

6 に答える 6

8

ポインターの配列ではなく、float の配列を割り当てることに注意してください。したがって、基本的に 2 つの配列は同じ型になり、同じメモリ空間に格納されません。

この方法で初期化できるのは、静的に割り当てられた配列のみです。動的に割り当てられた配列は、ゼロ以外に初期化することはできません。

myIDs = new float[]();

ただし、配列に入れる要素がわかっている場合は、動的に割り当てる必要はありません。

ポインターの配列を割り当てたい場合は、次のようにする必要があります。

float* myIDs[size]; // statically
float** myIDs = new float*[size]; // dynamically

ただし、静的に割り当てられたもの (最初のもの) のみが、説明した方法で初期化できます。もちろん、ポインターで初期化する必要があります。

于 2013-04-17T07:11:11.660 に答える
3

配列を動的に宣言する場合は、次のようにします。

float *array = new float[size];
array[0] = first_value;
array[1] = second_value;
etc; 

メモリが不要になったときは忘れずにメモリを解放してください (クラス デストラクタなど)。

delete [] array;
于 2013-04-17T07:37:40.833 に答える
0

動的に割り当てられた配列が必要な場合は、次の形式を使用する必要があります (C++ ではなく C# のように見えます)。

//The declaration of the object in the class
float *myIDs;

//The allocation it self (you must know which size you want to allocate at this point)
myIDs = new float[size];//bring change "size" to whatever you need is.
于 2013-04-17T07:10:49.223 に答える
0
于 2013-04-17T07:11:22.280 に答える
-4

ポインターの配列を float にする場合は、そのように宣言する必要があります。float の配列だけを宣言しました。配列の名前はもちろんポインタですが、C 構文では同じように扱われ、便利です。

float *myIDs[] = {
  //Variables
};

myIDs = new *float[n] = {
};

または、使用することができます

float **myIDs;
myIDs = new **float;

配列と同じ方法でアクセスします。

float *x = myIDs[i];

于 2013-04-17T07:11:09.610 に答える