#include #include "ZCppMain/ZtCStringEx.H" using namespace std ; using namespace ZNsMain ; namespace ZNsMain { namespace ZNsExam { template class ZtCExamCList { public: class CHelpObj { public: CHelpObj() { cout<<"* CHelpObj()"< CStringBase ; typedef const CStringBase CStringBaseC; /* 아래 자료형에 대해, CStringBase::Fetch() 호출 여부 실험. ZtCBaseList ZtCBaseList */ typedef ZtCBaseList CStringList1 ; typedef ZtCBaseList CStringList2 ; public: class ZCBaseListEx10 : public ZtCBaseList < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP > { public : typedef ZtCBaseList /////////////////////////////////////////////////////// < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP > ZCBaseList; /////////////////////////////////////////////////////////////// friend class ZtCBaseList ////////////////////////////////////////////////// < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP >; /////////////////////////////////////////////////////////////////////////// /*****************************************************************************/ typedef typename ZCBaseList::ZCLink ZCLink ; /*****************************************************************************/ typedef typename ZCBaseList::iterator iterator ; typedef typename ZCBaseList::const_iterator const_iterator; /*****************************************************************************/ public : _VT_ ZTypLong capacity() const { cout<<"[ZCBaseListEx10 : capacity()]"; return 0; }/* _VT_ ZTypLong capacity() const*/ _VT_ ZTypLong size_free() const { cout<<"[ZCBaseListEx10 : size_free()]"; return 0; }/* _VT_ ZTypLong size_free() const*/ private: _VT_ ZCLink* SendFreeOut() const { cout<<"** ZCBaseListEx10 : SendFreeOut()"<ZCBaseList::NewLink(); }/* _VT_ ZCLink* SendFreeOut() const*/ _VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const { cout<<"** ZCBaseListEx10 : SendFreeOut(TypeArg)"<ZCBaseList::NewLink(AO_ArgData); }/* _VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) const*/ _VT_ void SendFreeOut (ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) const { cout<<"** ZCBaseListEx10 : SendFreeOut("<ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); } _VT_ void SendFreeOutCopy /*///////////////////////*/ ( ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) const ///////////////////////////////////////////////////// { cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, "<ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); } _VT_ void RecvFreeIn(ZCLink* AP_DelLink) { cout<<"** ZCBaseListEx10 : RecvFreeIn(AP_DelLink)"<ZCBaseList::DelLink(AP_DelLink); }/* _VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/ _VT_ void RecvFreeIn ////////////////////////////////// ( ZTypLong AL_CutCnt , ZCLink* AP_CutHead, ZCLink* AP_CutTail ) /////////////////////////////////////////////////////// { cout<<"** ZCBaseListEx10 : RecvFreeIn("<ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } private: };/* class ZCBaseListEx10 : public ZtCBaseList*/ class ZCBaseListEx11 : public ZtCBaseList < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP > { public : typedef ZtCBaseList /////////////////////////////////////////////////////// < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP > ZCBaseList; /////////////////////////////////////////////////////////////// friend class ZtCBaseList ////////////////////////////////////////////////// < CStringBase, CStringBase&, ZCAllocator, ZTypLong , ZNsMain::ZtCMoveObj , ZNsType::ZtCTypeCRTP >; /////////////////////////////////////////////////////////////////////////// /*****************************************************************************/ typedef typename ZCBaseList::ZCLink ZCLink ; /*****************************************************************************/ typedef typename ZCBaseList::iterator iterator ; typedef typename ZCBaseList::const_iterator const_iterator; /*****************************************************************************/ public : _VT_ ZTypLong capacity() const { cout<<"[ZCBaseListEx11 : capacity()]"; return 0; }/* _VT_ ZTypLong capacity() const*/ _VT_ ZTypLong size_free() const { cout<<"[ZCBaseListEx11 : size_free()]"; return 0; }/* _VT_ ZTypLong size_free() const*/ private: _VT_ ZCLink* SendFreeOut() { cout<<"** ZCBaseListEx11 : SendFreeOut()"<ZCBaseList::NewLink(); }/* _VT_ ZCLink* SendFreeOut()*/ _VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData) { cout<<"** ZCBaseListEx11 : SendFreeOut(CStringBase&)"<ZCBaseList::NewLink(AO_ArgData); }/* _VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/ _VT_ void SendFreeOut (ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) { cout<<"** ZCBaseListEx11 : SendFreeOut("<ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); } _VT_ void SendFreeOutCopy /*///////////////////////*/ ( ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) ///////////////////////////////////////////////////// { cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, "<ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); } _VT_ void RecvFreeIn(ZCLink* AP_DelLink) { cout<<"** ZCBaseListEx11 : RecvFreeIn(AP_DelLink)"<ZCBaseList::DelLink(AP_DelLink); }/* _VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/ _VT_ void RecvFreeIn ////////////////////////////////// ( ZTypLong AL_CutCnt , ZCLink* AP_CutHead, ZCLink* AP_CutTail ) /////////////////////////////////////////////////////// { cout<<"** ZCBaseListEx11: RecvFreeIn("<ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } private: };/* class ZCBaseListEx11 : public ZtCBaseList*/ typedef typename ZCBaseListEx10::ZCLink ZCLink10; typedef typename ZCBaseListEx11::ZCLink ZCLink11; static void ShowDataInNode(const CStringBase& AR_Data, ZTypLong& ARRI_CallCnt) { cout<<++ARRI_CallCnt<<"* Data : "< void OnMeetType() { cout< void OnMeetType(int& AR_CallNo) { cout<<"* Call No="<<++AR_CallNo<<" : "< > > > ZCTypeChain; ZCTypeView VO_ZCTypeView; int VI_CallNo = 0; cout<<"*** tmpl chain size = "<(VO_ZCTypeView); cout<<"************************************"<::IterHead(VO_ZCTypeView); cout<<"************************************"<::IterTail(VO_ZCTypeView); ZftIterTmplChainHead ( VO_ZCTypeView, (VI_CallNo = 0) ); cout<<"************************************"< ( VO_ZCTypeView, (VI_CallNo = 0) ); cout<<"************************************"<:: IterHead(VO_ZCTypeView, ZftMCP(VI_CallNo=0)); cout<<"************************************"<:: IterTail(VO_ZCTypeView, ZftMCP(VI_CallNo=0)); ZTypLong VI_CallCnt=0; CStringBase VO_CStringBase; CStringList1 VO_ListOfStr1 ; CStringList2 VO_ListOfStr2 ; VO_ListOfStr1.AddTail(VO_CStringBase("data 10")); VO_ListOfStr1.AddTail(VO_CStringBase("data 40")); VO_ListOfStr1.AddTail(VO_CStringBase("data 20")); VO_ListOfStr1.AddTail(VO_CStringBase("data 40")); VO_ListOfStr1.AddTail(VO_CStringBase("data 04")); cout<<"# VO_CStringBase data : " < CIntList; CHelpObj VO_CHelpObj; CIntList VO_CIntList; VO_CIntList.AddTail(10); VO_CIntList.AddTail(20); VO_CIntList.AddTail(30); VO_CIntList.AddTail(40); cout< 6th)"< 1th)"< class ZtCExamCList*/ }/* namespace ZNsExam*/ }/* namespace ZNsMain*/ int main(int AI_ArgCnt, char* APP_ArgVal[]) { return ZNsMain::ZNsExam:: ZtCExamCList<>::Main(AI_ArgCnt, APP_ArgVal); }/* int main(int AI_ArgCnt, char* APP_ArgVal[])*/ /*//////////////////////////////////////////////////////////////////////////////////////// ■ cygwin 컴파일 // g++ -mno-cygwin -o ZtCBaseList_000.exe ZtCBaseList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 // g++ -mno-cygwin -o ZtCBaseList_000_D.exe ZtCBaseList_000.cpp -I../../my_CPP/CPP_Main/ -I../../my_CPP/CPP_Std/ -D__CYGWIN32__ -D__VISUAL_CPP_VER__=200300 -D_DEBUG ■ mingw 컴파일 g++.exe -o ZtCBaseList_000_mw.exe ZtCBaseList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation g++.exe -o ZtCBaseList_000_mw_D.exe ZtCBaseList_000.cpp -I../ -lWs2_32 -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG ./ZtCBaseList_000_mw.exe ./ZtCBaseList_000_mw_D.exe Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest # date Sun Aug 24 10:47:09 KST 2025 Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest # g++ --version g++.exe (Rev2, Built by MSYS2 project) 13.2.0 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ■ Linux 컴파일 g++ -std=c++98 -o ZtCBaseList_000.exe ZtCBaseList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation g++ -std=c++98 -o ZtCBaseList_000_D.exe ZtCBaseList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ date Sun Aug 24 00:05:51 DST 2025 sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ cat /etc/os-release NAME="Ubuntu" VERSION="20.04.6 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.6 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal [sauron@q381-2657 ZCppMainTest]$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) [sauron@q381-2657 ZCppMainTest]$ g++ --version g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ■ 실행 ./ZtCBaseList_000.exe ./ZtCBaseList_000_D.exe ////////////////////////////////////////////////////////////////////////////////////////*/