0

Planetというクラスがあります。

そして、私は Planet オブジェクトの配列を持っています。

次のように配列を宣言しました。

planet * planetList[5] = 
{
  new planet(...),
  new planet(...),
  new planet(...),
  new planet(...),
  new planet(...),
};

したがって、この配列をこれら 2 つの関数に渡す必要があります。

両方の関数について、まったく同じパラメーターを使用して、そのように宣言します。

void function1 (planet planetList[5], int numOfPlanets) {...}
void function2 (planet planetList[5], int numOfPlanets) {...}

しかし、これら2つの関数を呼び出すと、

// receives no error
function1(planetList, numOfPlanets);
// error saying "cannot convert parameter 1 from 'planet *[5]' to 'planet []'"
function2(planetList, numOfPlanets);   

誰でもこの現象を説明できますか?

4

4 に答える 4

2

惑星ポインターの配列 (planet * []) を宣言しましたが、関数パラメーターは惑星オブジェクト配列 (planet []) です。そのため、どちらの関数呼び出しも機能しないはずです。

試す:

void function1(planet *planetList[5], int numOfPlanets) {}
void function2(planet *planetList[5], int numOfPlanets) {}
于 2013-02-20T16:38:04.337 に答える
0

これを試して:

void function1 (planet** planetList, int numOfPlanets) {...}
void function2 (planet** planetList, int numOfPlanets) {...}
于 2013-02-20T16:32:13.927 に答える
0

オブジェクトを指すポインターの配列があります。オブジェクトを指すポインターの配列があるため、ポインターの配列へのポインターは
exの作業を行います
void function1 (planet *planetList[5], int numOfPlanets) {...}
void function2 (planet *planetList[5], int numOfPlanets) {...}

また

void function1 (planet **planetList, int numOfPlanets) {...}
void function2 (planet **planetList, int numOfPlanets) {...}

于 2013-02-20T16:54:13.067 に答える
0

私は Planet オブジェクトの配列を持っています

いいえ、Planet オブジェクトへのポインターの配列があります。オブジェクトの配列は次のようになります。

planet planetList[5] = 
{
  planet(...),
  planet(...),
  planet(...),
  planet(...),
  planet(...),
};

それはおそらくあなたが望むものです。

何らかの理由でポインタの配列が本当に必要な場合は、それを受け入れるように関数を変更する必要があります。

void function1(planet * planetList[5], int numOfPlanets);

または同等に

void function1(planet ** planetList, int numOfPlanets);

誰でもこの現象を説明できますか?

いいえ、両方の関数が同じようにコンパイルに失敗するはずです。現象を自分で再現できるように、より完全な例を投稿していただけますか?

于 2013-02-20T16:55:18.630 に答える