在c ++程序中使用void **

时间:2014-09-03 20:55:47

标签: c++

我必须在程序中使用void**。我正在编写以下代码。请指导我错在哪里。

struct kdnode
{
 kdnode* lch;
 int k;
 void **dataptr;
 kdnode* rch;
}; 

然后我分配

kdnode rt;
rt.dataptr=new void*[k];
rt.dataptr[0]=new int;

还有这种解除引用:

*(rt->dataptr[0])=n; //n is an initialized integer value.

基本上我想将void指针数组的元素分配给不同数据类型的指针。由于编译器抛出错误:

  

void*不是指针对象类型

请指导我做什么。

1 个答案:

答案 0 :(得分:0)

我可以重现此错误only if I add something like

*rt.dataptr[0] = 1;

添加后,g ++抱怨:

main.cpp:13:14: error: ‘void*’ is not a pointer-to-object type
 *rt.dataptr[0] = 1;

您无法取消引用void *。如果要取消引用它,请将其强制转换为原始类型(在本例中为int *)。