我有一个类似于Convert vector of vector to pointer of pointer问题中提到的问题。
唯一的区别是我必须使用布尔值而不是短裤。
但是如果我编译这段代码:
#include <vector>
/* C like api */
void foo(bool **psPtr, const int x, const int y);
int main()
{
const int x = 2, y = 3;
std::vector<std::vector<bool>> vvsVec(x, std::vector<bool>(y, 0));
std::vector<bool *> vpsPtr(x, nullptr);
/* point vpsPtr to the vector */
int c = 0;
for (auto &vsVec : vvsVec)
vpsPtr[c++] = vsVec.data();
/* api call */
foo(vpsPtr.data(), x, y);
return 0;
}
我收到以下错误:
./dummy/main.cpp:15:错误:从不兼容的类型'void'分配给'__gnu_cxx::__alloc_traits<std::allocator<bool *> >::value_type'(又名'bool *')
和
./dummy/main.cpp:15: 错误: 无效值没有被忽略,因为它应该是 vpsPtr[c++] = vsVec.data();
拜托,有人可以解释我做错了什么以及如何解决这个问题吗?
谢谢。