首页 > 解决方案 > 错误 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 *>>' 没有可行的转换

我不明白为什么会这样。对此问题的任何帮助将不胜感激

标签: flatbuffers

解决方案


首先,您要添加一个指向即将超出范围的局部变量的指针,指向 in 中的向量push_back。那是一个悬空指针。永远不要在任何 C++ 代码中这样做,无论是否使用 FlatBuffers。

其次,错误已经表明了问题:该函数需要一个值类型,而您正在提供一个指针。所以从上面的代码中删除*和。&


推荐阅读