1. ホーム
  2. c++

C++でtypedefはいつ使うべきですか?

2023-09-25 16:35:38

質問

私の長年の C++ (MFC) プログラミングにおいて、私は一度も typedef を使用する必要性を感じたことはなく、そのため、それが何のために使用されるのかよくわかりません。どこで使うべきなのでしょうか?また、実際に typedef を使うのが望ましいのでしょうか?それとも、これは本当に C 言語特有のキーワードなのでしょうか?

どのように解決するのですか?

テンプレート・メタプログラミング

typedef 必要 多くの テンプレートメタプログラミング タスク -- クラスが "コンパイル時型関数" として扱われるときはいつでも、そのクラスは typedef は、結果の型を得るために "コンパイル時の型値"として使われます。 例えば、ポインタ型をその基本型に変換するための単純なメタファンクションを考えてみましょう。

template<typename T>
struct strip_pointer_from;

template<typename T>
struct strip_pointer_from<T*> {   // Partial specialisation for pointer types
    typedef T type;
};

例:型式表現 strip_pointer_from<double*>::type は、以下のように評価されます。 double . なお,テンプレートメタプログラミングは,ライブラリ開発以外ではあまり使われません.

関数ポインタ型の簡略化

typedef 役に立つ は、複雑な関数ポインタ型に短く鋭い別名を与えるのに役立ちます。

typedef int (*my_callback_function_type)(int, double, std::string);

void RegisterCallback(my_callback_function_type fn) {
    ...
}