У меня есть следующий Vertex
-структура в Graph
классе:C++ «Нарушение прав доступа чтение место» Ошибка
struct Vertex
{
string country;
string city;
double lon;
double lat;
vector<edge> *adj;
Vertex(string country, string city, double lon, double lat)
{
this->country = country;
this->city = city;
this->lon = lon;
this->lat = lat;
this->adj = new vector<edge>();
}
};
При вызове метода я написал под названием getCost()
, я получаю то же необработанное исключение
нарушение прав доступа чтения местоположение 0x00000048
, и я не могу понять, почему.
getCost()
метод:
void Graph::getCost(string from, string to)
{
Vertex *f = (findvertex(from));
vector<edge> *v = f->adj; // Here is where it gives the error
vector<edge>::iterator itr = v->begin();
for (; itr != v->end(); itr++)
{
if (((*itr).dest)->city == to)
cout << "\nCost:-" << (*itr).cost;
}
}
Метод findvertex()
возвращает значение типа Vertex*
. Почему я продолжаю получать эту ошибку?
метод findVertex:
Vertex* Graph::findvertex(string s)
{
vmap::iterator itr = map1.begin();
while (itr != map1.end())
{
if (itr->first == s){
return itr->second;
}
itr++;
}
return NULL;
}
Где map1
определяется:
typedef map< string, Vertex *, less<string> > vmap;
vmap map1;
Вы отправили все рядом с наиболее подходящей частью. Подсказка: findvertex – SomeWittyUsername
Можете ли вы разместить findVertex, пожалуйста? – Alan
Что такое findvertex? то есть, если он не возвращает конкретный объект Вершины, то это ваша ошибка. – Chris