option.hpp
1 #ifndef MARIAN_OPTION_HPP
2 #define MARIAN_OPTION_HPP
3 
4 #include <utils/SmartPointer.hpp>
5 #include <financial/options/pricerAbstractFactory.hpp>
6 
7 namespace marian {
8 
14  class Option {
15  public:
16  Option(){};
22 
25  virtual ~Option() {};
26 
27 
30  virtual double getT() const = 0;
31 
34  virtual Option* clone() const = 0;
35  };
36 
49  template<typename T>
50  class DCOption : public Option {
51  public:
54  virtual Option* clone() const {
55  return new T(static_cast<const T&>(*this));
56  }
57  };
58 } // namespace marian
59 
60 
61 #endif /* MARIAN_OPTION_HPP */
virtual ~Option()
Destructor.
Definition: option.hpp:25
Template of deep-coping smart pointer.
Definition: smartPointer.hpp:9
Definition: backwardKolmogorovEq.cpp:5
virtual Option * clone() const =0
Virtual copy constructor.
Interface for financial derivativesClass implements abstraction of financial option.
Definition: option.hpp:14
virtual double getT() const =0
Returns maturity of option.
virtual Option * clone() const
Virtual copy constructor.
Definition: option.hpp:54
virtual SmartPointer< AbstractPricerFactory > allocateFactory() const =0
Method allocating Abstract Factory.
Deeply copyable Option.
Definition: option.hpp:50