Cześć, nie mogę znaleźć błędu w następującym kodzie:
Polynominal.h:
#pragma once
#include <vector>
template <typename T> // T can be int, double or float
class Polynomial
{
private:
// degree is a vector.size() - 1, so if we have vector [1, 4, 5, 0 , 2] <==> x^4 + 4x^3 + 5x^2 + 2
// the biggest deegree is at the [0] index
std::vector<T> factors;
public:
Polynomial();
Polynomial(const std::vector<T>& factors);
Polynomial(const Polynomial<T>& poly);
~Polynomial();
template < typename Z>
double operator()(T x);
};
Polynominal.cpp:
#include "Polynomial.h"
template <typename T>
Polynomial<T>::Polynomial()
{
factors.assign(1, 0);
}
template<typename T>
Polynomial<T>::Polynomial(const std::vector<T>& factors) : factors(factors) {}
template<typename T>
Polynomial<T>::Polynomial(const Polynomial<T>& poly) : factors(poly.factors) {}
template <typename T>
Polynomial<T>::~Polynomial() {}
template<typename T>
template<typename Z>
double Polynomial<T>::operator()(T x)
{
if (factors.size() == 1)
return factors[0];
else if (factors.size() == 2)
return factors[0] * x + factors[1];
double sum = factors[0]*x + factors[1];
for (int i = 2; i < (int) factors.size() ; i++ )
{
sum = sum * x + factors[i];
}
return sum;
}
main.pp:
#include <iostream>
#include "Polynomial.h"
int main()
{
std::vector<double> vec(4, 1);
Polynomial<double> forthDegree(vec);
}
Błędy zaczyna wywalać przy delkaracji obiektu Polynominal, natomiast nie wiem czemu się tak dzieje. Zdefiniowałem odpowiedni konstruktor, który tworzy obiekt na podstawie vectora.