请您解释以下代码中的错误:
void foo(void*& param)
{
param = new char[10];
}
void main()
{
int* p;
foo(p);
}
error C2664: 'foo' : cannot convert parameter 1 from 'int *' to 'void *&'
如何调用任何指针类型的函数并更改函数内的指针(不是该地址的值,地址本身)。我不想使用模板或双指针。
答案 0 :(得分:2)
如果要更新指针,最好将指针传递给指针
void foo(void** param)
{
*param = new char[10];
}
void main()
{
void* p;
foo(&p);
int* p2 = (int*)p;
}
答案 1 :(得分:2)
为什么不能将int*
作为参数传递给f
?
问题是,如果允许这样做,你就会破坏类型系统。说实话,这正是你想要做的......如果你想打破类型系统,你需要通过演员表明地请求它。
您在评论中指出您不想使用强制转换,另一方面编译器不希望您破坏类型系统。在那场意志之战中,我认为你不会说服编纂者......这太顽固了。