【问题标题】:Cannot convert unsigned int to unsigned int & (Boost adjacency iterator pointer)无法将 unsigned int 转换为 unsigned int &(提升邻接迭代器指针)
【发布时间】:2015-12-01 21:11:49
【问题描述】:

我在 Boost Graph Library 中有一个图表和一个模板函数 heapV。我将模板类声明为heapV <Graph::vertex_descriptor , Graph> lookAt;,所以类型名T 应该是vertex_descriptor

我想调用一个函数int heapV<T,U>::getIndex(T &key)。我正在尝试myHeapV.getIndex(*vItr),但得到错误

无法从 unsigned int 转换为 unsigned int&。

vItr 是来自 BGL 的邻接迭代器,邻接迭代器指针返回一个无符号整数。

如果有人需要,我会提供更多详细信息。

【问题讨论】:

    标签: c++ pointers boost types iterator


    【解决方案1】:

    getIndex 需要一个左值参数。

    所以您可能应该(谁知道,我不知道 getIndex 函数确实如此),使用(临时)变量:

    unsigned int key = *vItr;
    int index = myHeapV.getIndex(key); // lvalue reference
    

    如果代码在 MSVC 上编译,那是因为它使用了非标准的编译器扩展

    【讨论】:

      猜你喜欢
      • 2014-04-05
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多