lib 용 C 래퍼 API를 작성하고 있습니다.C++ : C에서 템플릿 클래스의 포인터 전달
나는 일반적으로 내 C++ 객체를 C에서 void*
으로 전달합니다. 그리고 모든 객체의 공용 함수에 대해 자연스럽게 액세스 래퍼 함수가 있습니다. C 코드 은 네이티브 C++ 클래스 멤버에 액세스하지 않습니다.
어제, IRC에서 C++ 템플릿 클래스의 포인터를 C로 옮겨서는 안되므로 언급했기 때문에 위험합니다. C는 void*
입니다. 사실입니까? 템플릿 클래스에 대한 포인터에서 일반적인 C++ 클래스에 대한 포인터는 얼마나 다른가요?
감사합니다.
멤버 함수 포인터를'void *'로 넘겨서는 안됩니다. 또는 함수 포인터라고 생각합니다. 또한 강력한 형식의 핸들 ('typedef struct foo foo; foo * create_foo(); void destroy_foo (foo *); 등)을 void * 대신 사용하는 것을 고려하십시오. –
흠, 강력하게 형식화 된 핸들은 아마도 더 좋을 것입니다. 어떻게 래퍼 코드에 맞는 지 보겠습니다 ... – kralyk