1. 程式人生 > 其它 >cpp template class defined in .h files and implemented in cpp files

cpp template class defined in .h files and implemented in cpp files

//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, int
len); 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