랩 씌운다는 건.. 대충... 아래와 같이 하라는 거임..
//////// 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 파일에서도 쓸 수 있음..
댓글 0