랩 씌운다는 건.. 대충... 아래와 같이 하라는 거임..


//////// AClass.hh


class AClass

{

public:


AClass()

: a( 0 )

{

}


~AClass()

{

}


int a;


int setA( int _a )

{

return ( a = _a );

}


int getA()

{

return a;

}

};



//////// AClassC.h


#ifdef  __cplusplus

extern  "C" {

#endif


typedef void* AClassC;


AClassC AClass_new();

void AClass_del( AClassC _A );

int AClass_setA( AClassC _A, int _a );

int AClass_getA( AClassC _A );


#ifdef  __cplusplus

}

#endif



//////// AClassC.cpp


#include "AClassC.h"

#include "AClass.hh"



AClassC AClass_new()

{

AClass* A = new AClass();

return static_cast< void* >( A );

}


void AClass_del( AClassC _A )

{

if( _A != nullptr )

{

AClass* A = static_cast< AClass* >( _A );

delete A;

}

}


int AClass_setA( AClassC _A, int _a )

{

if( _A != nullptr )

{

AClass* A = static_cast< AClass* >( _A );

return A->setA( _a );

}


return -1;

}


int AClass_getA( AClassC _A )

{

if( _A != nullptr )

{

AClass* A = static_cast< AClass* >( _A );

return A->getA();

}


return -1;

}




AClassC.h 만 포함하면 다른 c 파일에서도 쓸 수 있음..