#ifndef _reproducer_h_ #define _reproducer_h_ #include #include class FunctionBase{ public: FunctionBase(){ } virtual ~FunctionBase(){} virtual double operator()(double x) const{ std::cout << "FunctionBase::" << __func__ << std::endl; return x+1; } virtual double func1(double x) const{ std::cout << "FunctionBase::" << __func__ << std::endl; return -x; } }; class FunctionDerived1{ public: FunctionDerived1(){ } virtual ~FunctionDerived1(){} virtual double operator()(double x) const{ std::cout << "FunctionDerived1::" << __func__ << std::endl; return x; } virtual double func1(double x) const{ std::cout << "FunctionDerived1::" << __func__ << std::endl; return -x; } }; class FunctionDerived2{ public: FunctionDerived2(){ } virtual ~FunctionDerived2(){} virtual double operator()(double x) const{ std::cout << "FunctionDerived2::" << __func__ << std::endl; return x; } virtual double func1(double x) const{ std::cout << "FunctionDerived2::" << __func__ << std::endl; return -x; } }; class Base{ public: shared_ptr > elements; Base(std::vector* _elements): elements(_elements){ } virtual ~Base(){} }; #endif