问题描述
... 这是我的示例代码:
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 ++代码中做到这一点。
第二,该错误已经表明存在问题:该函数需要一个值类型,并且您正在提供一个指针。因此,从上面的代码中删除*
和&
。