제 경우는 gtk 스타일의 C++ like C 를 굉장히 좋아하는 편인데요. 아마 gtk 위짓들을 어떤 식으로 작성하는지 한번 찾아보시면 도움이 되리라 생각합니다.
하지만 template + STL로 된 C++코드라면 어쩐지 처음부터 새로 짜는 것이 낫겠다는 생각이 드는데요. 이 녀석들을 void * 로 바꾸어서 작업하시려면 웬만한 기본적인 data structure 들... ( list, variable array, associative array, tree, ... ) ... 을 거의 다 작성해주셔야 할겁니다.
여튼... 제가 즐겨쓰는 방식을 간단히 적어보지요. 헤더만 적으면 되겠지요?
typedef struct __MYCLASS {
int attr1;
} _MYCLASS;
typedef struct __MYCLASS *MYCLASS;
/* allocator & deallocator */
MYCLASS myclass_New(void);
int myclass_Delete(MYCLASS c);
/* copy constructor */
MYCLASS myclass_Copy(MYCLASS c);
/* initializer & finalizer */
int myclass_Initialize(MYCLASS c);
int myclass_Finalize(MYCLASS c);
/* attibutes */
int myclass_SetAttr1(MYCLASS, int value);
int myclass_GetAttr1(MYCLASS, int value2);
/* member functions */
int myclass_MemberFunc(MYCLASS c, int arg1);
뭐 대충 이런 식이됩니다. GTK코드에서 상속따위를 없애버린 제 스타일입니다 :shock:
C++에는 있지만 C에는 존재하지 않는 constructor와 destructor, copy constructor, reference 등을 잘 옮겨 주시는 것이 중요하지 않을까 싶은데요... 아울러 static 을 잘 활용하시면 private function 을 옮기는데도 많은 도움이 됩니다.
derived class따위가 있다면 좀 골치아프겠지요. 이때에는 composition 을 잘 사용하시면 좀 귀찮기는 하지만 그럭저럭 옮기실 수 있을것 같습니다.
ip받아서 처리하는 모듈인데 os따라서 틀리는 바람에
거의 새로 작성하는 꼴이 되어버렸네요.
그치만 이런류의작업들이 별로 많진 않나 부네요..
둘러봐도 컨버젼 관련된 내용은 잘 없네요.
특히 template같은 경우는 어떤 방법이 효율적인지 난해하군요..
하나하나 찾아서 만들수도 없고..--;;
...
제 경우는 gtk 스타일의 C++ like C 를 굉장히 좋아하는 편인데요. 아마 gtk 위짓들을 어떤 식으로 작성하는지 한번 찾아보시면 도움이 되리라 생각합니다.
하지만 template + STL로 된 C++코드라면 어쩐지 처음부터 새로 짜는 것이 낫겠다는 생각이 드는데요. 이 녀석들을 void * 로 바꾸어서 작업하시려면 웬만한 기본적인 data structure 들... ( list, variable array, associative array, tree, ... ) ... 을 거의 다 작성해주셔야 할겁니다.
여튼... 제가 즐겨쓰는 방식을 간단히 적어보지요. 헤더만 적으면 되겠지요?
뭐 대충 이런 식이됩니다. GTK코드에서 상속따위를 없애버린 제 스타일입니다 :shock:
C++에는 있지만 C에는 존재하지 않는 constructor와 destructor, copy constructor, reference 등을 잘 옮겨 주시는 것이 중요하지 않을까 싶은데요... 아울러 static 을 잘 활용하시면 private function 을 옮기는데도 많은 도움이 됩니다.
derived class따위가 있다면 좀 골치아프겠지요. 이때에는 composition 을 잘 사용하시면 좀 귀찮기는 하지만 그럭저럭 옮기실 수 있을것 같습니다.
방법은....
전 직접 해보지는 않았지만.. 둘다 프로그래밍을 조금은 해봤기 때문에...
제 생각에는 이렇게 하는것이 좋을 듯합니다.
일단 C++에서 클래스는 C의 구조체를 확장한 것이라고 볼 수 있습니다.
따라서 C++의 클래스의 필드들을 C의 구조체로 옮기고..
C에서 그 구조체를 받아서 처리하는 함수들을 만들면 되겠지요..
이를테면..
typedef struct
{
char *string;
}String;
void String_new ( char *string )
{
...
}
char *String_get ( String *s)
{
return s->string;
}
아주 극단적으로 단순한 예였습니다.
이런 식으로 바꾸시면 될거라 생각되네요.
----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com
답변 감사드립니다.^^
ip받아서 처리하는 모듈인데 os따라서 틀리는 바람에
거의 새로 작성하는 꼴이 되어버렸네요.
그치만 이런류의작업들이 별로 많진 않나 부네요..
둘러봐도 컨버젼 관련된 내용은 잘 없네요.
특히 template같은 경우는 어떤 방법이 효율적인지 난해하군요..
하나하나 찾아서 만들수도 없고..--;;
^^ 함께 커가는 세상
댓글 달기