commit 2025-10-20 01:01 edit a bit ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-20 01:01:36 +09:00
parent cd4ab32709
commit c30a14c0c9

View File

@ -3610,6 +3610,70 @@ namespace ZNsMain
각 객체에 어떻게 쉽게 접근하는지가 관건이다. -- 2025-10-18 01:41 각 객체에 어떻게 쉽게 접근하는지가 관건이다. -- 2025-10-18 01:41
() 을 재정의해서, () 을 필요한 만큼 겹겹이 호출해서 접근하도록 했다.
아래 예제:202510200053 참고.
■ 예제:202510200053
class ZCTypeView
{
public:
ZCTypeView()
{
cout<<"# ZCTypeView()"<<endl;
}
ZCTypeView(const ZCTypeView& rhs)
{
cout<<"ZCTypeView(const ZCTypeView& rhs)"<<endl;
}
template<typename TTypChain> void OnMeetType()
{
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetType(TTypHelp& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain> void OnMeetTypeVal()
{
cout<<"* Val="<<TTypChain::GetData()<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetTypeVal(TTypHelp& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TObjtChain> void OnMeetData(TObjtChain& AR_NowChain)
{
cout<<"* Type No="<<AR_NowChain.GetNo()<<" : "<<AR_NowChain.GetData()<<endl;
}
template<typename TObjtChain> void OnMeetData(TObjtChain& AR_NowChain, int& ARI_CallNo)
{
cout<<"# CallNo="<<++ARI_CallNo<<" : Type No="<<AR_NowChain.GetNo()<<" : "<<AR_NowChain.GetData()<<endl;
}
};
ZCTypeView VO_ZCTypeView;
typedef ZtCObjtChain
<
char , ZtCObjtChain<
string, ZtCObjtChain<
double, ZtCObjtChain<
int ,
ZCEmpty > > >
> ZCObjtChain; ZCObjtChain VO_ZCObjtChain;
VO_ZCObjtChain.GetChainNext().GetData()="abc";
VO_ZCObjtChain.GetData()='A';
VO_ZCObjtChain().GetData()="New Str";
VO_ZCObjtChain()().GetData()=0.8 ;
VO_ZCObjtChain()()().GetData()=1234 ;
VO_ZCObjtChain.IterHead(VO_ZCTypeView);
///////////////////////////////////////////////////////////////////*/ ///////////////////////////////////////////////////////////////////*/
template /*########################################################*/ template /*########################################################*/
@ -3669,7 +3733,7 @@ namespace ZNsMain
if(TypeChainNow::ZEBoolNext>0) if(TypeChainNow::ZEBoolNext>0)
{ {
static_cast<TypeChainNext&>(*this).IterHead(AO_CView); this->TypeChainNext::IterHead(AO_CView);
}/* }/*
if(TypeChainNow::ZEBoolNext>0)*/ if(TypeChainNow::ZEBoolNext>0)*/
}/* }/*
@ -3678,7 +3742,7 @@ namespace ZNsMain
{ {
if(TypeChainNow::ZEBoolNext>0) if(TypeChainNow::ZEBoolNext>0)
{ {
static_cast<TypeChainNext&>(*this).IterTail(AO_CView); this->TypeChainNext::IterTail(AO_CView);
}/* }/*
if(TypeChainNow::ZEBoolNext>0)*/ if(TypeChainNow::ZEBoolNext>0)*/
@ -3698,8 +3762,8 @@ namespace ZNsMain
if(TypeChainNow::ZEBoolNext>0) if(TypeChainNow::ZEBoolNext>0)
{ {
static_cast<TypeChainNext&>(*this). this->TypeChainNext::
IterHead( AO_CView, AO_TypeHelp ) ; IterHead(AO_CView, AO_TypeHelp);
}/* }/*
if(TypeChainNow::ZEBoolNext>0)*/ if(TypeChainNow::ZEBoolNext>0)*/
}/* }/*
@ -3710,8 +3774,8 @@ namespace ZNsMain
{ {
if(TypeChainNow::ZEBoolNext>0) if(TypeChainNow::ZEBoolNext>0)
{ {
static_cast<TypeChainNext&>(*this). this->TypeChainNext::
IterTail( AO_CView, AO_TypeHelp ) ; IterTail(AO_CView, AO_TypeHelp);
}/* }/*
if(TypeChainNow::ZEBoolNext>0)*/ if(TypeChainNow::ZEBoolNext>0)*/