datagenerator.hpp
#ifndef STOCK_INDICATOR_SOURCE_PROJECT_DATAGENERATOR_H
#define STOCK_INDICATOR_SOURCE_PROJECT_DATAGENERATOR_H
#include <random>
class RandomNumberRange{
public:
    RandomNumberRange(int low, int high);
    double operator()();
private:
    std::mt19937 random_engine_;
    std::uniform_int_distribution<> distribution_;
};
void generate(std::vector<int> data, RandomNumberRange generator);
#endif
datagenerator.cpp
class RandomNumberRange
{
public:
    RandomNumberRange(int low, int high)
            : random_engine_{std::random_device{}()}
            , distribution_{low, high}
    {}
    double operator()()
    {
        return distribution_(random_engine_);
    }
private:
    std::mt19937 random_engine_;
    std::uniform_int_distribution<> distribution_;
};
void generate(std::vector<int> data, RandomNumberRange generator)
{
    return std::generate(std::begin(data), std::end(data), generator);
}
And this is my main function
int main()
{
    std::vector<int> volume(days);
    generate(volume, RandomNumberRange(1, 100));
    return 0;
}
I get this error :
Undefined symbols for architecture x86_64:
  "RandomNumberRange::RandomNumberRange(int, int)", referenced from:
      random_input(unsigned int const&) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I want to populate a vector with random integers and include the code for this process in a separate file.
I think the problem is in the header file but I cannot figure out where.
