2014-01-21 1 views
0

У меня есть API с несколькими структурами данных. В нем также содержится некоторое количество typedefs в разных частях API. Я хочу сконцентрировать все эти typedef в одном специальном классе только с typedefs, чтобы упростить использование моего API и рассматривать их все в одном стиле по всему API.C++ typedefs, содержащий имя класса

  1. Есть ли какой-либо условный стиль именования для этого класса, содержащего только typedefs?
  2. Действительно ли это хорошая практика?
+3

Почему бы не «пространство имен»? – StoryTeller

+0

@StoryTeller Да, это также кажется хорошей идеей. – vard

ответ

2

Просто используйте C++ namespace. Он позволяет группировать связанные элементы с именованной областью без необходимости беспокоиться об использовании класса.

1

Я думаю, что вы имеете в виду trait classes. Они могут использоваться только для предоставления дополнительной информации по конкретным типам. Если ваши typedefs не связаны с типом, они не могут быть сгруппированы по типам, а классы признаков - это не путь.

Обычно они выглядят как

template<typename Type> 
struct type_trait { 
    typedef void type_trait; 
} 

и специализированы для каждого типа вы используете:

template<> 
struct type_trait<MyType> 
{ 
    typedef TraitType type_trait; 
} 

где TraitType это разумный тип черта (характерный тип) MyType, используемый в общий алгоритм (параметризованный по типу):

typename type_trait<Type>::type_trait 

Проблема здесь для лет u, если typedefs, распространяемые по вашему API, могут быть сгруппированы вокруг типов. Struct используется, а не класс для хранения typedefs, так как они будут публичными в любом случае.

Here - это учебник, который может вам пригодиться.

1

Нет, это не очень хорошая практика. Слепое собирание typedefs в одном месте не имеет абсолютно никакого смысла. Каждый typedef существует из-за чего-то и должен быть сгруппирован с тем, к чему он принадлежит.