类成员的typedef

时间:2017-06-21 04:56:09

标签: c++ boost typedef

是否可以使用类成员/函数执行typedef?在下面的示例中,我使用boost bimap函数来存储有关节点的最近邻居的信息。

typedef boost::bimap<float /*distance*/, int /*id*/> neighbor_list;
neighbor_list node_a;

//fill up neighbors of node_a

//get nearest neighbor of node_a
node_a.neighbor.left.begin()->second;

//get distance to the nearest neighbor of node_a
node_a.neighbor.left.begin()->first;

然而,上述行看起来很乱,可能不直观。所以我想知道是否有可能为班级成员做typedef所以我可以做类似以下的事情

typedef boost::bimap<float /*distance*/, int /*id*/> neighbor_list;
typedef neighbor_list::left::begin()->first nearest_neighbor;

//nearest neighbor of node_a
node_a.nearest_neighbor;

我知道我可以编写自己的函数来封装代码的混乱部分,但我想知道我是否可以为类成员提供别名。

1 个答案:

答案 0 :(得分:1)

将讨厌的解决方案委托给一个函数。

#include <boost/bimap.hpp>

typedef boost::bimap<float /*distance*/, int /*id*/> neighbor_list;

float nearest_neighbor(neighbor_list const& node)
{
  return node.neighbor.left.begin()->first;
}

void foo()
{
  neighbor_list node_a;

  nearest_neighbor(node_a);
}