commit 2025-09-28 17:19 add template parameter 'bool TTypebUseCRTP' inZtCTypeNowCRTP : ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-28 17:19:34 +09:00
parent c617e6ea8a
commit 286259df9d
2 changed files with 236 additions and 31 deletions

View File

@ -67,7 +67,6 @@ namespace ZNsMain
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
};
public:
typedef ZtCStringBase<char> CStringBase ;
@ -84,6 +83,159 @@ namespace ZNsMain
typedef ZtCBaseList
<CStringBase, CStringBaseC&> CStringList2 ;
public:
class ZCBaseListEx10 : public ZtCBaseList
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
{
public :
template //////////////////////////////////////////////////////////////////
<
typename TType , typename TTypArgu ,
typename TTypeAlloc , typename TTypSize ,
typename TMoveObj , typename TTypeCRTP
>
friend class ZtCBaseList; /*#############################################*/
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>
ZCBaseList; ///////////////////////////////////////////////////////////////
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>;
///////////////////////////////////////////////////////////////////////////
typedef typename ZCBaseList::ZCLink ZCLink;
private:
_VT_ ZCLink* NewLink()
{
cout<<"** ZCBaseListEx10 : NewLink()"<<endl;
return new ZCLink;
}/*
_VT_ ZCLink* NewLink()*/
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
{
cout<<"** ZCBaseListEx10 : NewLink(TypeArg)"<<endl;
return new ZCLink(AO_ArgData);
}/*
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
_VT_ void DelLink(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx10 : DelLink(ZCLink*)"<<endl;
delete AP_DelLink;
}/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/
private:
};/*
class ZCBaseListEx10 : public ZtCBaseList*/
class ZCBaseListEx11 : public ZtCBaseList
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
{
public :
template //////////////////////////////////////////////////////////////////
<
typename TType , typename TTypArgu ,
typename TTypeAlloc , typename TTypSize ,
typename TMoveObj , typename TTypeCRTP
>
friend class ZtCBaseList; /*#############################################*/
typedef ZtCBaseList ///////////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>
ZCBaseList; ///////////////////////////////////////////////////////////////
friend class ZtCBaseList //////////////////////////////////////////////////
<
CStringBase
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>;
///////////////////////////////////////////////////////////////////////////
typedef typename ZCBaseList::ZCLink ZCLink;
private:
_VT_ ZCLink* NewLink()
{
cout<<"** ZCBaseListEx11 : NewLink()"<<endl;
return new ZCLink;
}/*
_VT_ ZCLink* NewLink()*/
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
{
cout<<"** ZCBaseListEx11 : NewLink(TypeArg)"<<endl;
return new ZCLink(AO_ArgData);
}/*
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
_VT_ void DelLink(ZCLink* AP_DelLink)
{
cout<<"** ZCBaseListEx11 : DelLink(ZCLink*)"<<endl;
delete AP_DelLink;
}/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/
private:
};/*
class ZCBaseListEx11 : public ZtCBaseList*/
static void ShowDataInNode(const CStringBase& AR_Data)
{
@ -149,6 +301,16 @@ namespace ZNsMain
VO_CIntList.IterElement(StFunctor5::ShowElement, ZftMCP(VO_CHelpObj), ZftMCP(VO_CHelpObj) );
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
ZCBaseListEx10 VO_ZCBaseListEx10;
ZCBaseListEx11 VO_ZCBaseListEx11;
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-1"));
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-2"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-1"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-2"));
return 0;
}/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/