는 내가이"이중 다형성": 이중 발송 패턴 또는 방문자 패턴 만?
class BC_TOYFD
{
public:
BC_TOYFD(BS_TOYFD * pBS, BC2 dBC2);
virtual ~BC_TOYFD(void) ;
BS_TOYFD * _pBS ;
BC2 _dBC2 ;
double _PDA ; // store price down approximation
double _PUA ; // store price up approximation
virtual void COMPUTEBVDOWNFOR(PAYOFF_TOYFD * pPAYOFF, double * attime) = 0 ;
virtual void COMPUTEBVUPFOR(PAYOFF_TOYFD * pPAYOFF, double * attime) = 0 ;
};
이로부터
class DIRICHLET_TOYFD : public BC_TOYFD
{
public:
DIRICHLET_TOYFD(BS_TOYFD * pBS, BC2 dBC2) ;
~DIRICHLET_TOYFD(void) ;
void COMPUTEBVDOWNFOR(PAYOFF_TOYFD * pPAYOFF, double * attime) ;
void COMPUTEBVUPFOR(PAYOFF_TOYFD * pPAYOFF, double * attime) ;
};
파생하고 난
void DIRICHLET_TOYFD::COMPUTEBVDOWNFOR(PAYOFF_TOYFD * pPAYOFF, double * attime)
및
void DIRICHLET_TOYFD::COMPUTEBVUPFOR(PAYOFF_TOYFD * pPAYOFF, double * attime)
는 것을 따라 할 수있는 방법을 싶습니다 만민 pPAYOFF의 실행시의 형태로, 그러나
void DIRICHLET_TOYFD::COMPUTEBVDOWNFOR(PAYOFF_TOYFD * pPAYOFF, double * attime)
는
_PUA = something if the runtime type of pPAYOFF (which is an abstract class) is for instance CALL_TOYFD
및
_PUA = something else if the runtime type of pPAYOFF (which is an abstract class) is for instance PUT_TOYFD
CALL_TOYFD처럼 뭔가를 할 것이다, 일반적으로
dynamic_cast<>
에 의존하지 않고 및 PUT_TOYFD는 pu입니다. PAYOFF_TOYFD에서 파생 된 blic. 그리고 이후, 나는 기원전 BC_TOYFD의 인스턴스이며, pPAYOFF가 PAYOFF_TOYFD에 대한 포인터이고, BC와 pPAYOFF에 적합한 유형이 런타임에 해결되도록
double approx = bc->COMPUTEBVDOWNFOR(pPAYOFF, attime) ;
같은 것을 쓸 수 있도록하고 싶습니다 .
다른 힌트/정밀도없이 "이중 발송"또는 "역 이중 발송"패턴을 사용한다고 들었습니다. 필자는이 작업을 정확하게 수행하는 방법을 모른 채이 프레임 워크에서 구현하려고했습니다. 그건 그렇고, 나는 BC_TOYFD에서 파생 된 DIRICHLET_TOYFD와 같은 "다른"수업을 갖게 될 것입니다. 제가 해결하려고 노력하는 것과 동일한 문제를 해결해야 할 것입니다. 그래서 저는 이중 파견이 제 경우에 실제로 적용될 것입니다. 이 제약 조건을 고려해야합니다.
도움이 될 것입니다.
고맙습니다.