cpp template class defined in .h files and implemented in cpp files
阿新 • • 發佈:2022-12-03
//MathHelper.h #ifndef _MathHelper_H #define _MathHelper_H #include <iostream> #include <random> #include <stdio.h> using namespace std; template <class T> class MathHelper { public: random_device rd; mt19937 mt{rd()}; T getRandom(T min, T max); void getRandomArray(T *arr, T min, T max, intlen); void printArray(T *arr, int len); void randomDemo(T min, T max, int len); }; #endif //MathHelper.cpp #include "Model/MathHelper.h" template <class T> T MathHelper<T>::getRandom(T min, T max) { uniform_int_distribution<T> uid(min,max); return uid(mt); } template<class T> void MathHelper<T>::getRandomArray(T *arr, T min, T max, int len) { for (int i = 0; i < len; i++) { T temp=getRandom(min,max); arr[i] = temp; } } template <class T> void MathHelper<T>::printArray(T *arr, int len) { for (int i = 0; i < len; i++) { cout<< "Index=" << i << ",value=" << arr[i] << endl; } } template <class T> void MathHelper<T>::randomDemo(T min, T max, int len) { T *arr = new T[len]; getRandomArray(arr, min, max, len); printArray(arr, len); delete[] arr; cout << endl << "Finished in " << __FUNCTION__ << endl; } //main.cpp #include "Model/MathHelper.h" #include "Model/MathHelper.cpp" int main(int args, char **argv) { MathHelper<uint64_t> mh; mh.randomDemo(0, UINT64_MAX, atoi(argv[1])); cout << "Finished in " << __FUNCTION__ << "," << __LINE__ << endl; }
Compile and run