1

I have a function const void* getData() which returns a pointer to constant data const void* I need to write a wrapper to this function that gets an (output) argument in which it should return the above pointer.

void wrapGetData([type] ppData) {
*ppData = getData();
}

What should be the [type]? void ** is not sutable,since getData() returns pointer to the const

4

2 回答 2

5

如果getData()返回void const *,那么[type]应该是void const * &

void wrapGetData(void const * & ppData) 
{
    ppData = getData();
}

请注意,这&是必需的,ppData输出参数也是如此。

您可以将此函数称为:

void const * output;

wrapGetData(output); 

这与您必须将函数调用为的其他解决方案有点不同:

wrapGetData(&output); //if [type] = const void **

请注意,const void*void const*是同一件事。所以不要与语法混淆。


这与您必须将函数调用为的其他解决方案有点不同:

wrapGetData(&output); //if [type] = const void **

希望有帮助。

于 2013-01-06T14:42:51.010 回答
2

const void**

const void *getData() {
  return nullptr;
}

void wrapGetData(const void** ppData) {
  *ppData = getData();
}

int main() {
  const void *p;
  wrapGetData(&p);
}
于 2013-01-06T14:44:35.547 回答