Kompilacja dalej przedstawionego kodu kończy się błędem:
Error 1 error LNK2019: unresolved external symbol "public: double __thiscall Average<double>::Arithmetical(class std::vector<double,class std::allocator<double> >)" (?Arithmetical@?$Average@N@@QAENV?$vector@NV?$allocator@N@std@@@std@@@Z) referenced in function _main
Average.h
#ifndef Average.h
#define Average.h
#include "Core.h"
template <class T>
class Average
{
public:
Average() {}
~Average() {}
T Arithmetical(vector<T> a);
T Geometric(vector<T> a);
T Weighted(vector<T> a, vector<T> w);
};
#endif
Average.cpp
#include "Average.h"
template <class T>
T Average<T>::Arithmetical(vector<T> a)
{
T result = accumulate(a.begin(),a.end(),0) / a.size();
return result;
}
template <class T>
T Average<T>::Geometric(vector<T> a)
{
T product;
auto operation = [](T element) -> T { product*= element };
for_each(a.begin(),a.end(), operation);
T result = pow(product,-a.size());
return result;
}
template <class T>
T Average<T>::Weighted(vector<T> a, vector<T> w)
{
T magnitudeSum = 0;
T result = 0;
for(unsigned int i=0;i<a.size();++i)
{
magnitudeSum = magnitudeSum + a[i]*w[i];
}
result = magnitudeSum / accumulate(w.begin(),w.end(),0);
return result;
}
#include "Core.h"
int main(int argc, char* argv[])
{
double tab[] = {1,2,3};
vector<double> v(tab,tab+3);
Average<double> average;
double result = average.Arithmetical(v);
cin.get();
return 0;
}
Proszę o pomoc przy znalezieniu błędu