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(); である必要があるため、void 値は無視されません。
誰かが私が間違っていることとこれを修正する方法を説明してもらえますか?
ありがとう。