I have a very simple project. The file main.cpp creates a vector of floats, sorts them, then prints them.
I compile it with:
g++ main.cpp quickSort.cpp
If in main.cpp I change
#include "quickSort.h"
to
#include "quickSort.cpp"
it works fine.
How do I change this project so that it works with the header file?
main.cpp
#include <iostream>
#include <random>
#include <vector>
#include "quickSort.h"
#define MODULO 200
#define SIZE 1500
int main(){
    std::vector<float> data;
    for(int i=0;i<SIZE;i++)
        data.push_back(rand()%MODULO);
    data=quickSort(data);
    for(int i=0;i<data.size();i++){
        std::cout<<data[i]<<',';
    }
    std::cout<<'\n';
    return 0;
}
quickSort.cpp
#include <vector>
template<typename T>
std::vector<T> quickSort(std::vector<T> data){
    if(data.size()==0)return data;
    int pivot=data[data.size()/2];
    std::vector<T> a;
    std::vector<T> b;
    std::vector<T> c;
    std::vector<T> ret;
    for(int i=0;i<data.size();i++){
        if(data[i]<pivot)a.push_back(data[i]);
        if(data[i]==pivot)b.push_back(data[i]);
        if(data[i]>pivot)c.push_back(data[i]);
    }
    a=quickSort(a);
    c=quickSort(c);
    for(int i=0;i<a.size();i++)ret.push_back(a[i]);
    for(int i=0;i<b.size();i++)ret.push_back(b[i]);
    for(int i=0;i<c.size();i++)ret.push_back(c[i]);
    return ret;
}
quickSort.h
#include <vector>
template<typename T>
std::vector<T> quickSort(std::vector<T> data);
