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.