我必须在程序中使用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*
不是指针对象类型
请指导我做什么。
答案 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 *
)。