flatbuffers - 错误 flatbuffers 创建一个结构向量
问题描述
...这是我的示例代码:
struct QfeelSLAMNode {
int mnNodeID;
float mX,mY,mTheta;
bool mbIsLandmark;
};
std::vector<Nodes>m_nodes;
std::vector<const Qflat::slam_node*> f_node;
for (auto it = m_nodes.cbegin();it != m_nodes.cend();it++){
Qflat::slam_node node(it->mnNodeID,it->mX,it->mY,it->mTheta,it->mbIsLandmark);
f_node.push_back(&node);
}
auto test_flat = builder.CreateVectorOfStructs(f_node.begin().base(),f_node.size());
auto table = Qflat::CreateFbVTDataNodes(builder,node_data_type,testv2);
但是当我创建表时,我得到了这个错误:
从 'Offset<Vector<const Qflat::slam_node *const *>>' 到 'Offset<Vector<const Qflat::slam_node *>>' 没有可行的转换
我不明白为什么会这样。对此问题的任何帮助将不胜感激
解决方案
首先,您要添加一个指向即将超出范围的局部变量的指针,指向 in 中的向量push_back
。那是一个悬空指针。永远不要在任何 C++ 代码中这样做,无论是否使用 FlatBuffers。
其次,错误已经表明了问题:该函数需要一个值类型,而您正在提供一个指针。所以从上面的代码中删除*
和。&
推荐阅读
- r - 如何删除R中向量中的双引号
- reactjs - NextJS - 带有页面道具的 Router.push
- node.js - 带有 Laravel Echo 和 Socket.io 的节点但没有响应
- python - Or-tools:将 2 天连续添加到调度问题中
- flutter - 如何在 Flutter/dart 中使变量成为全局变量?
- c# - 内存如何在 C# 中通过变量赋值工作?
- python - 预测值的数据集索引与实际值的索引不匹配
- node.js - 如何使用 Docker 配置 Nginx 以正确方式运行 Node 和 Mongo
- r - missMDA 函数中的错误
- java - 不能导入双