在我的命名空间中公开外部库类时,使用typedef或using关键字

时间:2011-05-05 22:21:24

标签: c++ namespaces typedef using-statement

我想将一个类从外部库公开给我的库的用户。具体来说,我想将类“导入”到我的命名空间,以便用户不需要知道我在幕后使用的库。通常我似乎可以使用typedef或简单地using来完成此操作。是否有任何理由选择一种方法而不是另一种方法(或做其他事情)? (我的教育似乎有些差距:))

例如:我想创建一个使用Boost :: Asio的串口管理器。

namespace MySerialManager {
  //should I use a typedef
  typedef boost::asio::serial_port_base::flow_control flow_control ;
  //or a using...
  using boost::asio::serial_port_base::flow_control;

  class SerialManager 
  {
    //let the user specifify the flow on construction
    SerialManager(const flow_control& fc);
  }
}

或者我应该完全做其他事情......非常感谢。

2 个答案:

答案 0 :(得分:2)

两者都有相同的最终结果。使用可能更接近你的意图。

答案 1 :(得分:1)

如果您想“导入”一个类模板,那么using将是您唯一的选择。就目前而言,我认为没有任何实质性的区别。就个人而言,在上述情况下我会选择typedef,因为它是一个较旧且更熟悉的结构。