ホームページ > バックエンド開発 > C++ > 基本クラス テンプレートの typedef が派生クラス テンプレートでアクセスできないのはなぜですか?

基本クラス テンプレートの typedef が派生クラス テンプレートでアクセスできないのはなぜですか?

Patricia Arquette
リリース: 2024-12-09 15:51:10
オリジナル
784 人が閲覧しました

Why is my typedef in a base class template inaccessible in my derived class template?

派生クラス テンプレート内の Typedef が認識されません

基本クラス テンプレート A から継承する派生クラス テンプレート B を宣言する場合、typedef が期待されますA で定義された Vec_t は B 内でアクセス可能になります。ただし、この例では、B 内の Vec_t へのアクセスは失敗します。認識されないというエラーです。

C 標準 (14.6.2/3) によれば、クラス テンプレート定義およびメンバー定義では、非修飾名の検索はテンプレート パラメーターに依存する基本クラスには拡張されません。 。これは、派生クラス テンプレート内では、基本クラスで定義された typedef への無修飾アクセスが許可されていないことを意味します。

この問題を解決するには、typedef の完全名を派生クラス テンプレート内で使用する必要があります。これは、次のように基底クラスのスコープを明示的に指定することで実現できます。

typename A<T>::Vec_t v;
ログイン後にコピー

基底クラスのスコープで名前を明示的に修飾することで、コンパイラーは基底クラスで定義された Vec_t typedef への参照を正しく解決できます。テンプレート。

以上が基本クラス テンプレートの typedef が派生クラス テンプレートでアクセスできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート