static_cast<final_class*>(this)
От: Аноним  
Дата: 18.02.08 09:31
Оценка:
Приветствую!
template <typename T>
class base
{
    T                    m_tData;
public:
    void                BaseFoo(void) const        { }
};

template <typename FinalClass>
class impl
{
    typedef FinalClass                        final_class;
public:
    void                Foo(void) const
    { static_cast<const final_class*>(this)->BaseFoo(); }
    void                Foo(void)
    { static_cast<final_class*>(this)->BaseFoo(); }
};

template <typename T>
class final
    : public base<T>
    , public impl< final<T> >
{
};
Чем порочна такая практика разработки дизайна? Говорит ли стандарт об этом что-нибудь?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.