edit test.cpp

This commit is contained in:
2021-03-10 16:17:47 +09:00
parent f74469a01c
commit f8fbc66cee
2 changed files with 68 additions and 4 deletions

View File

@ -721,10 +721,11 @@ namespace ZNsMain
namespace ZNsEnum*/
template<typename TTypeChar, typename TTypeLength> int GetCompareCode(
template<typename TTypeChar, typename TTypeLength> ZTypIntE GetCompareCode
(
const TTypeChar* ApcLeft , TTypeLength AI_LeftLength ,
const TTypeChar* ApcRight, TTypeLength AI_RightLength
) /*################################################################*/
) /*####################################################################*/
{
if(AI_LeftLength<1 && AI_RightLength<1) return ZNsEnum::ZECompareResult_Equal;
@ -743,10 +744,11 @@ namespace ZNsMain
return ZNsEnum::ZECompareResult_Equal;
}/*
template<typename TTypeChar, typename TTypeLength> int GetCompareCode(
template<typename TTypeChar, typename TTypeLength> ZTypIntE GetCompareCode
(
const TTypeChar* ApcLeft , TTypeLength AI_LeftLength,
const TTypeChar* ApcRight, TTypeLength AI_RightLength
) ##################################################################*/
) ######################################################################*/
namespace ZNsType
@ -975,6 +977,59 @@ namespace ZNsMain
namespace ZNsType*/
/* 어떤 변수를 강제적으로 참조로 인식하게 하는 클래스. 인수를 참조로
넘어가게 하고 싶을 때 사용한다. class ZtCCheckRef 에서 사용하고 있다.
-- 2021-04-10 16:15
*/
template<typename TType> class ZtCRef
{
public :
typedef TType& TypeData;
typedef TType TypeRaw ;
private:
TypeData mr_Data;
public :
ZtCRef(TypeData AR_TypeData) : mr_Data(AR_TypeData){}
public :
TypeData GetData(){return mr_Data;}
};/*
template<typename TType> class ZtCRef*/
/* template 인수에 ZtCRef 가 있으면, 해당 값을 참조로 인식하고
그렇지 않으면, 일반적인 복사해서 전달되는 값으로 인식한다.
-- 2021-04-10 16:15
*/
template<typename TType> class ZtCCheckRef
{
public :
typedef TType TypeData ;
typedef TType TypeRaw ;
private:
TypeData mr_Data;
public :
ZtCCheckRef(TypeData AR_TypeData) : mr_Data(AR_TypeData){}
public :
TypeData GetData(){return mr_Data;}
};/*
template<typename TType> class ZtCCheckRef*/
/* ZtCRef 전문화 */
template<typename TType> class ZtCCheckRef< ZtCRef<TType> >
{
public :
typedef TType& TypeData;
typedef TType TypeRaw ;
private:
TypeData mr_Data;
public :
ZtCCheckRef(TypeData AR_TypeData) : mr_Data(AR_TypeData){}
public :
TypeData GetData(){return mr_Data;}
};/*
template<typename TType> class ZtCCheckRef< ZtCRef<TType> >*/
template<typename TClassExec> class ZtCArguBind
{
public:

View File

@ -85,6 +85,15 @@ int main(int ArgiCnt, char** AppArgu)
HereInt2 myi2= &myi1;
HereInt3 myi3= myi1 ; myi3=123;
ZtCRef<int> myref(myi1);
ZtCCheckRef< int > myrefcheck1(myi1); myrefcheck1.GetData();
ZtCCheckRef< ZtCRef<int> > myrefcheck2(myi1); myrefcheck2.GetData();
myi1=4321;
cout<<"# myrefcheck1.GetData()="<<myrefcheck1.GetData()<<endl;
cout<<"# myrefcheck2.GetData()="<<myrefcheck2.GetData()<<endl;
cout<<"# HereInt1 ="<< typeid(myi1).name()<<endl;
cout<<"# HereInt2 int* ="<< typeid(myi2).name()<<endl;
cout<<"# HereInt3 int& ="<< typeid(myi3).name()<<endl;