typedef или использование ключевого слова при показе внешнего библиотечного класса в моем пространстве имен - PullRequest
4 голосов
/ 06 мая 2011

Я хочу показать класс из внешней библиотеки пользователям моей библиотеки.В частности, я хочу «импортировать» класс в мое пространство имен, чтобы пользователю не нужно было знать, какие библиотеки я использую за кулисами.Часто кажется, что я могу сделать это, используя 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 ]

2 голосов
/ 06 мая 2011

Оба имеют одинаковый конечный результат. использование, возможно, более близко к вашему намерению.

1 голос
/ 06 мая 2011

Если вы хотите «импортировать» шаблон класса, тогда using будет вашим единственным вариантом. В нынешнем виде, я не думаю, что есть существенная разница. Лично я бы пошел на typedef в приведенном выше случае, потому что это более старая и более знакомая конструкция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...