1. ホーム
  2. c++

[解決済み】公式には、typenameは何のためにあるのか?

2022-03-17 04:51:39

質問

によって吐き出される、本当に解読不能なエラーメッセージを目にすることがあります。 gcc テンプレートを使用する際に... 具体的には、一見正しく見える宣言が非常に奇妙なコンパイル・エラーを引き起こすという問題がありましたが、そのようなエラーは typename キーワードを宣言の先頭に追加しています... (たとえば、ちょうど先週、2つのイテレータを別のテンプレート化されたクラスのメンバーとして宣言していたので、これを実行する必要がありました)...

については、どうなんでしょう? typename ?

解決方法は?

以下は、ヨスッティの本からの引用です。

<ブロッククオート

キーワードは typename は、次のように導入されました。 という識別子を指定します。 の後に続くのは型である。を考えてみよう。 次のような例です。

template <class T>
Class MyClass
{
  typename T::SubType * ptr;
  ...
};

ここです。 typename が使われていることを明確にするために SubType の一種です。 class T . このように ptr へのポインタです。 T::SubType . がなければ typename , SubType は静的メンバとみなされます。 このように

T::SubType * ptr

は、値の乗算になります SubType タイプの Tptr .