如何在运行时使用typeof创建void *指针

时间:2012-12-11 10:16:42

标签: c++

#define test(p) (typeof(*(*p)) *)

pvoid **而不是其他内容时,上述宏失败。

它适用于c但不适用于c ++。在c ++中是否有任何循环方式?

1 个答案:

答案 0 :(得分:1)

在C ++(11)中有remove_pointer,它返回输入类型参数指向的类型。

  

基本上,当p为int **时,我使用该宏进行int *类型转换。但是当p为void **时它失败并出现错误。[...]不,我不能使用typeof(* p),因为这个宏还需要确保p是双指针。

如果你需要一个简单的功能模板应该有帮助。

template<typename T>
T* remove_pointer_cast(T** p)
{
    return (T*)(p);
}