Привет !
Итак VC6 sp5. В классе CBlahBlah понадобился хитрый метод OnChangeObjectName, который будет для типа IPNode выполнять действия отличные от действий для объектов других типов(общих наследников нет и быть не может).
Пробовал перегрузить OnChangeObjectName, компилер не смог разрулить. Специализации методов вроде как нет ?
Вобщем вышло что вышло.
Просьба — подскажите пожалуйста путь покороче. Леплю конфетку из дерьма, так что дизайн и тд просьба не ругать.
class CBlahBlah
{
template<class Extensible>
class ChangeObjectName
{
public:
static HRESULT OnChangeObjectName(SBDoc *pDoc,Extensible* pObj,LPCTSTR newName)
{
// общий случай
return hr;
}
};
template<>
class ChangeObjectName<IPNode>
{
public:
static HRESULT OnChangeObjectName(SBDoc *pDoc,IPNode* pObj,LPCTSTR newName)
{
// конкретный случай
return hr;
}
};
template<class Ext>
HRESULT OnChangeObjectName(Ext *pExt,LPCTSTR newName)
{
return ChangeObjectName<Ext>::OnChangeObjectName(m_pDoc,pExt,newName);
}