0

我正在尝试Vertex从向量返回一个类型的对象。我只能使用迭代器;返回一个取消引用的迭代器做我想要的吗?更准确地说,我想初始化v2Vertex我正在返回的指针:即:

Vertex* v2;
v2 = &(p_graph->getVertex(vert2));

为了做到这一点,我必须使用getVertex()返回 aVertex来在它前面加上 & 来创建一个指针并将其分配给v2. getVertex()功能是:

Vertex Graph::getVertex(std::string v) {         // gets the vertex 
    for (std::vector<Vertex>::iterator it = vertices.begin(); it != vertices.end(); it++) {
        if ((it->getName()).compare(v) == 0)
            return *it;  // if strings are the same return vertex
    }
    exit(1);
}

但是我无法分配它,因此在这部分代码中的某个地方出现了错误,我一直试图找到几个小时。

4

1 回答 1

4

问题是您正在尝试获取临时地址。

(p_graph->getVertex(vert2));

该表达式(p_graph->getVertex(vert2))返回一个临时的,并且这种临时的生命周期是直到;达到。

场景更像——

Vertex *v2 = & Vertex();

您可以选择const资格v2延长此类临时的使用寿命。尝试 -

const Vertex* v2 = &(p_graph->getVertex(vert2));
于 2013-09-02T03:46:52.023 回答