错误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 >'到'Offset >'

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

解决方法

首先,您要添加一个指向本地变量的指针,该指针将超出push_back中向量的范围。那是一个悬空的指针。不论是否使用FlatBuffer,都不要在任何C ++代码中做到这一点。

第二,该错误已经表明存在问题:该函数需要一个值类型,并且您正在提供一个指针。因此,从上面的代码中删除*&

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...