64,680
社区成员
发帖
与我相关
我的任务
分享
template<typename T>
struct CCYControlCreator
{
/*CCYControlT<CCYButtonT> *CreateControl()
{
return NULL;
}*/
};
template<>
struct CCYControlCreator<CCYButtonT>
{
//CCYControlT<CCYButtonT> *CreateControl()
//{
// CCYControlT<CCYButtonT> *pControl = new CCYControlT<CCYButtonT>;
// //pControl->Create();
// return pControl;
//}
};
template<>
struct CCYControlCreator<CCYIconButtonT>
{
//CCYControlT<CCYIconButtonT> *CreateControl()
//{
// CCYControlT<CCYIconButtonT> *pControl = new CCYControlT<CCYIconButtonT>;
// //pControl->Create();
// return pControl;
//}
};
template
<
typename T,
template<typename> class TCreatePolicy = CCYControlCreator
>
class CCYControlManagerT
: public TCreatePolicy<T>
{
//私有成员
private:
CCYControlT<T> *m_pControlHover; // 正在移动的控件
CCYControlT<T> *m_pControlDown; // 被鼠标按下的控件
CCYControlT<T> *m_pControlSelected; // 选中的控件
。。。。
struct CCYButtonT{};
struct CCYIconButtonT{};
template<typename T>
struct CCYControlCreator {
};
template<>
struct CCYControlCreator<CCYButtonT> {
};
template<>
struct CCYControlCreator<CCYIconButtonT> {
};
template<class T>
struct CCYControlT
{
};
template
<
typename T,
template<typename> class TCreatePolicy = CCYControlCreator
>
class CCYControlManagerT
: public TCreatePolicy<T>
{
//私有成员
private:
CCYControlT<T> *m_pControlHover; // 正在移动的控件
CCYControlT<T> *m_pControlDown; // 被鼠标按下的控件
CCYControlT<T> *m_pControlSelected; // 选中的控件
};
int main()
{
CCYControlManagerT< CCYButtonT > xx;
return 0;
}