我正在将状态类的指针设置为节点的指针但是我得到访问冲突我不知道是什么问题?
例外情况在这里:iosfwd
static int __CLRCALL_OR_CDECL compare(const _Elem *_First1, const _Elem *_First2,
size_t _Count)
{ // compare [_First1, _First1 + _Count) with [_First2, ...)
return (_CSTD memcmp(_First1, _First2, _Count));
}
我的代码 在DijkstraState.h
void setCurrent(vertex<T>* v)
{
current = v ;
}
在graph.h中
private member: DijkstraState<type>* states ;`
in constructor: states = new DijkstraState<type>();
template <class type>
void graph<type>::add_vertex(vertex<type> input)
{
type vertex_data = input.get_data() ;
//check vertex does not exist
if(indexes.find(vertex_data) == indexes.end())
{
indexes[input.get_data()] = count ;
vertices[count] = input ;
states[count].setCurrent(&(vertices[count]));//////////////////////////
count ++ ;
}
}
答案 0 :(得分:1)
input
是您的函数的参数。您可以将其视为使用从调用者传入的值初始化的局部变量。当函数返回时,该参数变量将超出范围。您在input
的调用中保存了指向setCurrent
的指针,如果在add_vertex
完成后尝试使用指针,则会留下无效指针和未定义的行为。
您还没有显示足够的代码来了解如何修复它。我不知道states
的用途是什么,count
来自哪里,或者为什么需要保存指向变量的指针。