Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 项目未添加到向量c++;_C++ - Fatal编程技术网

C++ 项目未添加到向量c++;

C++ 项目未添加到向量c++;,c++,C++,但项目并没有添加到“NodeCollection”。它的计数是零。该添加对象不为null 我需要一些帮助来解决这个问题。我是C++新手。 提前谢谢 你需要了解。GetNodeCollection正在返回向量的全新副本。然后将节点添加到此新副本,而不是原始副本 嗯,也许更多。无论如何,关键是你得到的是一个全新的副本,而不是对原始向量的引用 一种修复方法是将返回类型更改为引用(必须在定义GetNodeCollection的地方进行相同的更改) std::vector&getNodeCollectio

但项目并没有添加到“NodeCollection”。它的计数是零。该添加对象不为null

我需要一些帮助来解决这个问题。我是C++新手。

提前谢谢

你需要了解。GetNodeCollection正在返回向量的全新副本。然后将节点添加到此新副本,而不是原始副本

嗯,也许更多。无论如何,关键是你得到的是一个全新的副本,而不是对原始向量的引用

一种修复方法是将返回类型更改为引用(必须在定义GetNodeCollection的地方进行相同的更改)

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();