-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 回答