无法取消引用双指针,“不匹配运算符*”

Cannot dereference double pointer, " no match for operator* "

我正在尝试搜索指向 class 形状对象的指针数组。我写了下面的代码。但是,我收到此错误:“不匹配运算符*”,而且我不知道从这里去哪里。感谢任何帮助。

Shape** shapesArray;

bool doesNameExist(string name) {
    for (int i = 0; i < shapeCount; i++)
    {
        if(*(shapesArray[i])->getName() == name)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}
  • shapesArray 是一个 Shape**

  • shapesArray[i]Shape*

  • (shapesArray[i])->getName() 正在取消引用 shapesArray[i] 并调用其 会员 getName

到目前为止没有错。我想这就是你真正想要得到的,但是你添加了另一个 *:

  • *(shapesArray[i])->getName() 试图取消引用 return 从 getName 编辑的内容(也许是 std::string?)

PS:在任何一种情况下,您从第一次迭代的循环中 return。如果你想在数组中搜索你需要循环直到找到它(然后 return true)或者循环直到结束(然后在循环之后 return false,因为它没有找到)。