【发布时间】:2018-12-23 10:10:37
【问题描述】:
这是我的代码
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]);
}
}
一行
bool* tmpArr = tmp.data();
向我抛出错误:“不应忽略的无效值” 我查看了文档,我确定向量的数据方法是非 void 并且应该返回一个指针:> http://www.cplusplus.com/reference/vector/vector/data/
有什么想法会出错吗?
重要的事情:
- 我包括矢量
- 我在 gcc 上的编译标志:-Wall -Wextra -Wcast-qual -pedantic -pedantic-errors -Wfatal-errors -Wno-missing-braces -Werror
- 该函数是一个类,但我没有添加其余部分,因为它只是消除了问题的焦点,而且它是一个使用复杂架构并行运行的类。
【问题讨论】:
-
那是
std::vector<bool>特化的特殊问题,无法获取单个位的地址。 -
这个问题的答案可能有用,stackoverflow.com/questions/6485496/…
-
要解决这个问题,您可能可以创建一个简单的结构来包装 bool 值并将其存储在向量中
-
或者只使用(比如)
char的向量