-1

当我开始学习 C++ 和算法时。我想在模块范式中对代码进行分组。所以我把排序过程分成了3个文件,如下:

sort.h

namespace sort
{
    void insertSort(int* a,int size);    
}

排序文件

#include "sort.h"
namespace sort
{
}
void sort::insertSort(int* a,int size)
{
    int i,j,key;
    for(j=1;j<size;j++)
    {
        key=a[j];
        i=j-1;
        while(i>=0 && a[i]>key)
        {
            a[i+1]=a[i];
            i=i-1;
        }
        a[i+1]=key;
    }
}

主文件

#include<iostream>
#include"sort.h"
int main()
{
    int a[6]={5,2,4,6,1,3};
    sort::insertSort(a,6);
    for(int i=0;i<6;i++) std::cout<<a[i]<<'\t';
    return 0;
}

当我使用 Dev-C++ 编译这三个文件时。我得到以下错误信息:

[链接器错误] 未定义对 `sort::insertSort(int*, int)' 的引用

我不知道为什么。我想我已经包含了文件“sort.h”,那么为什么它还告诉我编译不能引用该方法sort::insertSort()

4

1 回答 1

1

在构建整个程序时,请确保将所有目标文件链接在一起。链接器抱怨是因为您的main()函数正在调用该sort::insertSort函数,该函数已在 中声明sort.h但其定义并未包含在整个程序中。

我不知道您的特定 Dev-C++ 环境需要哪些参数,但通常,请确保所有cpp文件都在您发送到编译器前端的命令行中。

于 2013-02-02T08:51:20.770 回答