0

こんにちは、ここに投稿するのは初めてです。私はコーディングに比較的慣れていないため、多くの問題を抱えています。ほとんどの場合、エラーを修正する方法について自分で学ぶことができますが、今は配列と構造体で大きな障害にぶつかっただけだと思います。現時点では、コンパイルすると私に与えられます

undefined reference to `buildArrays(std::string, int, int, int)'

問題は、メイン関数で buildArray 呼び出し元を「修正」しようとするたびにこのエラーが発生し続け、構造 Players で文字列 PlaName を char PlaName [25] に変更すると、何とか機能しますが、エラーは変更されません。とにかく、配列が関数から別の関数に呼び出されるようにコードを変更しようとすることはできますか? このエラーについて調べた情報のほとんどは、リンカに関するもので、役に立ちません。

ところで、私の宿題では、ファイルから配列を作成し、それを関数から呼び出し、メイン関数で呼び出し、残りのメイン関数でその配列を使用する必要があります。未定義の参照エラーを渡すことができないため、プログラムが機能するかどうかはわかりません。プログラムのほとんどは次のとおりです。

using namespace std;

struct Players
{
    string PlaName;
    int PlaGoal;
    int PlaAssist;
    int Points;
};

int buildArrays( string, int, int, int);
void printArrays( string, int, int, int, int);
void sortArrays( string, int, int, int, int);

int main()
{
Players player;

   buildArrays(player.PlaName,player.PlaGoal,player.PlaAssist,player.Points); //this is the error

  cout<<"Chicago Blackhawks UNSORTED Report;";


}

int buildArrays( string playerNames[], int goals[], int assists[], int rating[] ) //this function's format is required for the homework
{
    ifstream inFile;

    inFile.open("hockey.txt");
    if (inFile.fail())
        {
        cout<<"The hockey.txt input file did not open";
        exit(-1);
        }

    while (inFile)
        for(int i = 0; i <= 25; i++)
        {
        inFile >> playerNames[i]
               >> goals[i]
               >> assists[i]
               >> rating[i];
        cout<<playerNames[i]<<goals[i]<<assists[i]<<rating[i];
        }
        inFile.close();
        return 0;
}
4

1 に答える 1

0

buildArrays 関数プロトタイプが関数定義と一致しないことが問題のようです。関数は配列を受け取りますが、プロトタイプは配列構文を使用しません。プロトタイプを次のように変更します。

buildArrays( string[], int[], int[], int[] ) ;

また、main() 関数は配列を buildArrays() 関数に渡す必要があります。単一の構造体を作成して各メンバーを渡すだけでは不十分です。宿題に buildArrays() 関数形式を使用する必要がある場合は、データの整理方法をやり直す必要があるかもしれません。おそらく、プレイヤー データごとに個別の配列を作成し、buildArrays() を呼び出した後に構造体の配列を作成します。

于 2013-03-30T00:35:01.043 に答える