0

I'm trying to implement a mergesort algorithm in c++, however I keep getting the following error:

Error   LNK2019 unresolved external symbol "int __cdecl mergeSort<int>(int * const,int,int)" (??$mergeSort@H@@YAHQEAHHH@Z) referenced in function main

I have never gotten this error before. I believe it has something to do with how my functions are set up and the input parameters, but I'm unsure.

Here is my main file:

#include "functions.h"

int main(void) {

    int arr[10] = { 97, 9, 41, 32, 65, 63, 0, 19, 56, 26 };

    mergeSort(arr, 0, 9);

    for (int i = 0; i < 10; i++) {
        std::cout << arr[i] << std::endl;
    }

    return 0;
}

My function header file:

#pragma once

#include <iostream>
#include <string>

template <typename T>
T mergeSort(T arr[], int start, int end);

template <typename T>
T merge(T arr[], int start, int mid, int end);

and my function file:

#include "functions.h"

template <typename T>
T mergeSort(T arr[], int start, int end)
{
    if (start < end) {
        int mid;
        mid = (start + end) / 2; //finds middle

        mergeSort(arr, start, mid);
        mergeSort(arr, mid + 1, end);

        merge(arr, start, mid, end);
    }
}

template <typename T>
T merge(T arr[], int start, int mid, int end)
{
    int i, j, k, c[50];
    i = start;
    k = start;
    j = mid + 1;

    while (i <= mid && j <= end) {
        if (arr[i] < arr[j]) {
            c[k] = arr[i];
            k++;
            i++;
        }
        else {
            c[k] = arr[j];
            k++;
            j++;
        }
    }
    while (i <= mid) {
        c[k] = arr[i];
        k++;
        i++;
    }
    while (j <= end) {
        c[k] = arr[j];
        k++;
        j++;
    }
    for (i = start; i < k; i++) {
        arr[i] = c[i];
    }
}
ChrisMM
  • 7,552
  • 11
  • 27
  • 44
Mac
  • 1
  • 1

0 Answers0