0

您能否从以下代码中解释错误:

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 *&'

我如何调用具有任何指针类型的函数并更改函数内部的指针(不是该地址处的值,地址本身)。我不想使用模板或双指针。

4

2 回答 2

2

如果要更新指针,最好将指针传递给指针

void foo(void** param)
{
    *param = new char[10];
}

void main()
{
    void* p;
    foo(&p);
    int* p2 = (int*)p;
}
于 2012-05-11T13:12:44.523 回答
2

为什么不能将int*as 参数传递给f

问题是,如果允许这样做,您将破坏类型系统。老实说,这正是你想要做的......如果你想打破类型系统,你需要通过强制转换明确地请求它。

您在评论中指出您不想使用强制转换,另一方面编译器不希望您破坏类型系统。在那场意志之战中,我不认为你会说服编译器......它太固执了。

于 2012-05-11T13:54:56.597 回答