"空值不被忽略,因为它应该是"非空函数

Fer*_*ico 2 c++ gcc c++14

这是我的代码

  void execute() {
    for (u32 f = 0; f < numForces; f++)
    {
      u32 length = end - start;
      PhysicalObject* arr = objects + start;
      std::vector<bool> tmp(length);
      bool* tmpArr = tmp.data();
      forces[f].affected(arr, length, tmpArr);
      for(u32 index = 0; index < length; index++)
        if (tmp[index])
          forces[f].apply(arr[index]);
    }
  }
Run Code Online (Sandbox Code Playgroud)

这条线

      bool* tmpArr = tmp.data();
Run Code Online (Sandbox Code Playgroud)

抛出我的错误:"void值不被忽略,因为它应该是"我已经查看了文档,我确定vector的数据方法是无效的,应该返回一个指针:> http://www.cplusplus.com /参考/载体/载体/数据/

什么可能出错?

重要的事情:

  • 我包括矢量
  • 我在gcc上的编译标志:-Wall -Wextra -Wcast-qual -pedantic -pedantic-errors -Wfatal-errors -Wno-missing-braces -Werror
  • 该函数是一个类,但我还没有添加其余的,因为它只是从问题中删除焦点,它是由在其中使用了复杂的结构并行运行的类.

joh*_*ohn 5

不幸的vector<bool>是很特别.

https://en.cppreference.com/w/cpp/container/vector_bool

切换到最好你可能会更好 vector<uint8_t>