从方法获取指向常量的指针作为指针指针

时间:2016-06-23 04:08:40

标签: c++

我需要从方法中获取指向常量的指针。指向常量的指针不能作为返回值返回。

Getpointer 方法的签名应该是什么?

struct xyz
{
    int x;
    int y;
    int z;
};

xyz myruntime;
void Getpointer(xyz **pz);
int _tmain(int argc, _TCHAR* argv[])
{
    const xyz *ptr = NULL;  
    Getpointer(&ptr);

    return 0;
}

void Getpointer(const xyz const ** pz)
{
    *pz = &myruntime;
}

2 个答案:

答案 0 :(得分:4)

你的功能原型

void Getpointer(xyz **pz);

与功能定义

不匹配
void Getpointer(const xyz const ** pz)

此外,const xyzxyz const相同,const xyz const是多余的。所以函数原型应该是

void Getpointer(const xyz ** pz);

并且函数定义应该类似,但最后没有分号。

答案 1 :(得分:2)

您也可以在C ++中使用引用

  void Getpointer(const xyz *&pz)
  {
      pz = &myruntime;
  }

然后将其称为

 const xyz *ptr = NULL;  
 Getpointer(ptr);