我需要从方法中获取指向常量的指针。指向常量的指针不能作为返回值返回。
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;
}
答案 0 :(得分:4)
你的功能原型
void Getpointer(xyz **pz);
与功能定义
不匹配void Getpointer(const xyz const ** pz)
此外,const xyz
与xyz 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);