【问题标题】:How to check if element of class array is empty?如何检查类数组的元素是否为空?
【发布时间】:2019-05-14 18:39:15
【问题描述】:

原来是这样

entity * Ptr[8] = { NULL, };

但是当我使用

通过引用将 Ptr 带到另一个函数时
updateMap(&mapGrid, Ptr); //and
void updateMap(map * mapGridU, entity * entityPtr) //then
if (entityPtr[i] != NULL)// gives an error

它说没有运算符“!=”匹配实体和int的这些操作数

【问题讨论】:

  • entity * Ptr[8] = { NULL, }; 是什么意思?
  • entity * entityPtr -> entity ** entityPtr。 (我敢打赌,这不是您遇到的唯一错误。在 C++ 中,不要立即一个一个地解决错误,首先尝试从整体上解决它们)
  • 如果错误不在updateMap(&mapGrid, Ptr); 上,您的编译器需要更高的一致性标志。
  • (有点 OT:该代码看起来像 C,而不是(现代)C++。使用现代 C++,我敢打赌这个问题甚至不会首先存在(可调整大小的容器、std::optional 等。 ).)
  • @appleapple 是抽象的父类

标签: c++ arrays class pointers null


【解决方案1】:

下标运算符间接指向指针操作数。结果是指针指向的值加上整数操作数。

由于entityPtr 是entity *,它指向一个entity 对象。因此entityPtr[i] 操作会产生entity 类型的左值。由于您将entity 对象与NULL 进行比较,因此必须有一个不等式运算符可以将entity 和指针常量NULL 作为参数。您的错误表明不存在这样的运算符。

我怀疑您的意图不是将指向的entity 对象与NULL 进行比较。我怀疑您打算将一些指针与NULL 进行比较。

【讨论】:

    猜你喜欢
    • 2015-01-13
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2017-09-05
    • 2015-08-09
    相关资源
    最近更新 更多