【发布时间】:2012-03-26 17:34:38
【问题描述】:
我正在为我的 lib 编写一个 C 包装 API。
我通常将我的 C++ 对象作为 void* 在 C 中传递。每个对象的公共函数自然都有访问包装函数。 C 代码不访问本机 C++ 类成员。
昨天,有人在 IRC 上提到,我不应该在 C 中将指向 C++ 模板类的指针传递为 void*,因为这很危险。这是真的?指向普通 C++ 类的指针与指向模板类的指针有何不同?
谢谢!
【问题讨论】:
-
您不应将成员函数指针作为
void*传递。或者函数指针,我想。此外,请考虑使用强类型句柄(typedef struct foo foo; foo* create_foo(); void destroy_foo(foo*);等)而不是void*。 -
嗯,强类型句柄可能会更好,我会看看它如何适合我的包装代码......