指向常量指针的指针

时间:2013-01-06 14:40:48

标签: c++ pointers const

我有一个函数const void* getData(),它返回一个指向常量数据const void*的指针 我需要为这个函数编写一个包装器,它获取一个(输出)参数,它应该返回上面的指针。

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

[type]应该是什么? void **不是可变的,因为getData()返回指向const

的指针

2 个答案:

答案 0 :(得分: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 **

希望有所帮助。

答案 1 :(得分:2)

const void**

const void *getData() {
  return nullptr;
}

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

int main() {
  const void *p;
  wrapGetData(&p);
}