1

我目前正在使用模拟器,在调试运行时遇到以下错误:Expression: vector incompatible iterators

代码如下:

    class Network {
    private:
             vector<Node*> nodes;
             ....
             void parse_config(void);
             ....
    };

在 parse_config 方法中,我有一个生成错误的序列。就是这个:

    if(nodes.empty()) // add the first node to the network
        {
            Node current(regex_d[1]); // create current(first src) node
            Node *acurrent = &current;  

            Node next_hop(regex_d[2]); // create the node we immediately send to
            Node *anext_hop = &next_hop;

            acurrent->add_next_hop(anext_hop); 

            acurrent->add_n_vchannels(regex_d[5]);

            nodes.push_back(acurrent); // <== error
            nodes.push_back(anext_hop); // <== here as well
        }

有解决方法吗?任何帮助/建议/参考将不胜感激。

塞比

4

1 回答 1

1

您的指针指向一个堆栈对象。虽然这在您的代码中并不明显,但很可能您的节点向量中有一些指针已被回收。在上面:

节点 *acurrent = new Node(regex_d[1]);

至少会使记忆问题更准确。

至于您遇到的问题,也许内存位置被用于其他东西,导致您的指针指向与 Node.js 完全不同的对象。

于 2012-03-22T17:32:04.110 回答