ホームページ  >  記事  >  バックエンド開発  >  `Link* next` は C テンプレートで挿入されたクラス名を使用しますか?

`Link* next` は C テンプレートで挿入されたクラス名を使用しますか?

DDD
DDDオリジナル
2024-11-02 22:18:30749ブラウズ

Does `Link* next` Use the Injected Class Name in C   Templates?

テンプレート パラメーターを使用せずにクラス テンプレートでクラス名を使用する

C ブックの次のコードを考えてみましょう。

<code class="cpp">template <typename E> class Link {
    ...
    Link* next;  // this line may be confusing
    ...
};</code>

このコードでは、テンプレート引数 E を指定せずにメンバー next が宣言されており、その正確性が懸念されます。次は Link* ではないでしょうか?

説明

これは「注入されたクラス名」の概念で説明されます。 C 標準 [temp.local] に従って、テンプレート引数なしで使用した場合、クラス テンプレート内のクラス名は、クラス名の後に山括弧で囲まれたテンプレート パラメーターが続いたものと同等になります。したがって、この場合、Link* は Link* と同等です。

このルールは便宜を目的としており、クラス内のクラス名が、クラス内のクラス名がクラス自体を参照し、外部エンティティを参照することを保証しません。同じ名前。クラス テンプレートの場合、特に拡張テンプレート引数リストを扱う場合に簡略記法が提供されます。

以上が`Link* next` は C テンプレートで挿入されたクラス名を使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。