Является ли использование typedef как способ облегчить использование альтернативных имен классов неправильно? - PullRequest
0 голосов
/ 23 октября 2019

В моей библиотеке C ++ во многих модулях я использую typedef следующим образом:

class ClassName {
//...
}

typedef ClassName AlternateClassName;

Я делаю это, чтобы просто позволить себе и другим людям разрешать вызывать мои классы по именам, отличным отих официальные - не более чем синоним. Это нормально использовать typedef?

Ответы [ 3 ]

5 голосов
/ 23 октября 2019

Это допустимый вариант использования. Другим случаем для этого часто является использование для созданных экземпляров шаблонов.

typedef std::vector<int> DynamicInts;

Если вы используете C ++ 11, я бы вместо этого предложил ключевое слово using.

using DynamicInts = std::vector<int>;
3 голосов
/ 23 октября 2019

typedef здесь хорошо, но его современная замена using лучше. using использует более обычный синтаксис слева направо, и он также может быть шаблонным

template <typename T>
using vec_size_type = typename std::vector<T>::size_type;

vec_size_type<int> sz;

Альтернатива с typedef неуклюжа:

template <typename T>
struct vec_size_type{
    typedef typename std::vector<T>::size_type type;
};

vec_size_type<int>::type sz;
1 голос
/ 23 октября 2019

Это нормально использовать typedef?

ИМХО, да.

Я работал с несколькими командами, которые использовали идею "сжатия"имена классов. Я не слышал жалоб по этому поводу.

class ClumsyButAccuratelyDescriptiveName_t {
//...
}

typedef ClumsyButAccuratelyDescriptiveName_t CAD_t;
...