commit 2025-10-20 01:01 edit a bit ZCppMain/ZMainHead.H
This commit is contained in:
@ -3610,6 +3610,70 @@ namespace ZNsMain
|
||||
|
||||
각 객체에 어떻게 쉽게 접근하는지가 관건이다. -- 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 /*########################################################*/
|
||||
@ -3669,7 +3733,7 @@ namespace ZNsMain
|
||||
|
||||
if(TypeChainNow::ZEBoolNext>0)
|
||||
{
|
||||
static_cast<TypeChainNext&>(*this).IterHead(AO_CView);
|
||||
this->TypeChainNext::IterHead(AO_CView);
|
||||
}/*
|
||||
if(TypeChainNow::ZEBoolNext>0)*/
|
||||
}/*
|
||||
@ -3678,7 +3742,7 @@ namespace ZNsMain
|
||||
{
|
||||
if(TypeChainNow::ZEBoolNext>0)
|
||||
{
|
||||
static_cast<TypeChainNext&>(*this).IterTail(AO_CView);
|
||||
this->TypeChainNext::IterTail(AO_CView);
|
||||
}/*
|
||||
if(TypeChainNow::ZEBoolNext>0)*/
|
||||
|
||||
@ -3698,8 +3762,8 @@ namespace ZNsMain
|
||||
|
||||
if(TypeChainNow::ZEBoolNext>0)
|
||||
{
|
||||
static_cast<TypeChainNext&>(*this).
|
||||
IterHead( AO_CView, AO_TypeHelp ) ;
|
||||
this->TypeChainNext::
|
||||
IterHead(AO_CView, AO_TypeHelp);
|
||||
}/*
|
||||
if(TypeChainNow::ZEBoolNext>0)*/
|
||||
}/*
|
||||
@ -3710,8 +3774,8 @@ namespace ZNsMain
|
||||
{
|
||||
if(TypeChainNow::ZEBoolNext>0)
|
||||
{
|
||||
static_cast<TypeChainNext&>(*this).
|
||||
IterTail( AO_CView, AO_TypeHelp ) ;
|
||||
this->TypeChainNext::
|
||||
IterTail(AO_CView, AO_TypeHelp);
|
||||
}/*
|
||||
if(TypeChainNow::ZEBoolNext>0)*/
|
||||
|
||||
|
Reference in New Issue
Block a user