C++ 传递指向对象的指针的指针,无法访问成员

C++ Passing a Pointer to a Pointer to an Object, cannot access members

本文关键字:指针 访问 成员 对象 C++      更新时间:2023-10-16

我正在创建一个程序,该程序创建两个对象并通过一个包含许多选项的大菜单传递它们。我一直用来将它们作为参数传递的解决方案是创建一个指向对象的指针。但是,我遇到了一个问题,如果我使用指向对象的指针作为参数,则会出现编译器错误。显然,我在这里没有想到一个 c++ 约定。

void runMainMenu(Point** ptrPtrPoint)
{
.
.
*ptrPtrPoint->displayCoord();
.
}

据我所知,此操作应该是可能的,但这立即被拾取为错误"表达式必须具有指向类的指针类型(当间接寻址运算符与指向类的指针一起使用时,它应该如此(。传递指向对象的指针和访问成员函数的正确格式是什么?

您已成为运算符优先级的受害者。

首先取消引用以获取Point*,然后使用->

(*ptrPtrPoint)->displayCoord();

编译器将原始代码读取为

*(ptrPtrPoint->displayCoord()); 

问题是运算符优先级

您首先需要取消引用指针到指针,然后使用->调用函数。正确的代码行是这样的:

(*ptrPtrPoint)->displayCoord();

请注意运算符优先级,因为在这种情况下,编译器会给您一个错误,但事实并非如此。有时,这些错误可能会产生未定义的行为或未执行的行为。