-3

何をめちゃくちゃにしたのかわからない。私はいくつかの値が台無しになっていると思います、そして私はこれを修正しようとしています。これは私のコードを含む単純な配列のように感じますが、このファイルを並べ替えようとすると、このエラーが発生します。

1>ClCompile:
1>  Main.cpp
1>Main.obj : error LNK2019: unresolved external symbol "void __cdecl sort(struct salesTran * const,int)" (?sort@@YAXQAUsalesTran@@H@Z) referenced in function _main
1>C:\Users\BranN3W\Documents\Visual Studio 2010\Projects\3-1Notes\Debug\3-1Notes.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.96

==========ビルド:0成功、1失敗、0最新、0スキップ==========

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct salesTran {
    string name;
    double quantity,price;
};

void swap(salesTran A[], int i, int j);
void sort(salesTran A[], int size);

ostream& operator << (ostream& os, salesTran A)
{os << A.name << "\t" << A.quantity << "\t" << A.price;
    return os;}
istream& operator >> (istream& is, salesTran& A)
{is >> A.name >> A.quantity >> A.price;
    return is;}

int main()
{
    salesTran data[250];

    ifstream fin;
    fin.open("sales.txt");
    ofstream fout;
    fout.open("results.txt");

    int index = 0;
    fin >> data[index];
    while(!fin.eof())
    {
        index++;
        fin >> data[index];
    }

    sort(data, index);

    for(int j=0; j < index; j++)
    {
        cout << data[j] << endl;
    }

    return 0;
}

void swap(int data[], int i, int j)
{
    int temp;
    temp = data[i];
    data[i] = data[j];
    data[j] = temp;
    return;
}

void sort(int data[], int size)
{
    for(int p=1; p<size; p++)
    {
        for(int c=0; c<size-p; c++)
        {
            if(data[c]>data[c+1]) swap(data,c,c+1);
        }
    }
    return;
}
4

2 に答える 2

1

これは、sort関数がint data[]パラメーターを受け取るためですが、それを使用すると、パラメーターを渡しますsalestran data[]。のプロトタイプがありますが、void sort(salesTran A[], int size);定義されていません。また、構造体を適切に使用するには、ソート関数を変更する必要があります。

于 2013-03-05T01:33:48.557 に答える
0

まず、次のように並べ替え関数とスワップ関数を宣言します。

void swap(salesTran A[], int i, int j);
void sort(salesTran A[], int size);

その後、構造体の配列ではなく整数の配列を取るものとして関数を定義しますsalesTran

void swap(int data[], int i, int j);
void sort(int data[], int size);

コードをリンクするには、宣言と定義が一致している必要があります。

于 2013-03-05T01:37:46.063 に答える