C++ 项目未添加到向量c++;
但项目并没有添加到“NodeCollection”。它的计数是零。该添加对象不为null 我需要一些帮助来解决这个问题。我是C++新手。 提前谢谢 你需要了解。GetNodeCollection正在返回向量的全新副本。然后将节点添加到此新副本,而不是原始副本 嗯,也许更多。无论如何,关键是你得到的是一个全新的副本,而不是对原始向量的引用 一种修复方法是将返回类型更改为引用(必须在定义GetNodeCollection的地方进行相同的更改)C++ 项目未添加到向量c++;,c++,C++,但项目并没有添加到“NodeCollection”。它的计数是零。该添加对象不为null 我需要一些帮助来解决这个问题。我是C++新手。 提前谢谢 你需要了解。GetNodeCollection正在返回向量的全新副本。然后将节点添加到此新副本,而不是原始副本 嗯,也许更多。无论如何,关键是你得到的是一个全新的副本,而不是对原始向量的引用 一种修复方法是将返回类型更改为引用(必须在定义GetNodeCollection的地方进行相同的更改) std::vector&getNodeCollectio
std::vector&getNodeCollection();
什么是路径节点?它神秘地出现在您的代码片段中……它是一个JSONNode,“nodesMap.find(id)->second”不是空的。Node或者更确切地说是节点的容器?请多注意你所展示的和你所说的。注:航路节点。s、 在第一个清单中,该方法被声明为类Way的一部分?方法实现std::vector&Way::GetNodeCollection()const{return NodeCollection;}但是它得到了一个erroryes,因此当您现在将_向后推时,它将实际写入Way对象中的向量,因此它不应该保持为空-您必须从实现中删除“const”(因为您想要修改对象的一个成员)
class Way {
private:
std::vector<Node> nodesCollection;
public:
Way();
Way(const Way& orig);
virtual ~Way();
void SetNodesCollection(std::vector<Node> nodesCollection);
std::vector<Node> GetNodesCollection() const;
};
Way wayNode;
for (; WayIter!=wayNodes.end(); ++WayIter)
{
const JSONNode& arrayNode = *WayIter;
if (arrayNode.find("ref") != arrayNode.end() )
{
std::string id = arrayNode.find("ref")->as_string();
if(nodesMap.find(id) != nodesMap.end())
{
wayNode.GetNodesCollection().push_back(nodesMap.find(id)->second);
}
}
}
std::vector<Node>& GetNodesCollection();