C++ class를 C에서 사용하기
foo.h
#pragma once
class Foo {
public:
Foo(int value) : value(value) {}
~Foo() {}
void set_value(int value);
int get_value();
private:
int value;
};
foo.cpp
#include "foo.h"
void Foo::set_value(int value) { this->value = value; }
int Foo::get_value() { return this->value; }
foo_cwrapper.h
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
typedef struct Foo Foo;
Foo *Foo_new(int value);
void Foo_delete(Foo *self);
void Foo_set_value(Foo *self, int value);
int Foo_get_value(Foo *self);
#ifdef __cplusplus
}
#endif
foo_cwrapper.cpp
#include "foo_cwrapper.h"
#include "foo.h"
Foo *Foo_new(int value) { return new Foo(value); }
void Foo_delete(Foo *self) { delete self; }
void Foo_set_value(Foo *self, int value) { self->set_value(value); }
int Foo_get_value(Foo *self) { return self->get_value(); }