ホームページ > バックエンド開発 > C++ > C で変更されたテンプレート クラスのテンプレート Typedef を定義する方法

C で変更されたテンプレート クラスのテンプレート Typedef を定義する方法

DDD
リリース: 2024-12-17 00:57:25
オリジナル
541 人が閲覧しました

How to Define a Template Typedef for a Modified Template Class in C  ?

変更されたテンプレート クラスのテンプレート Typedef を定義する方法

型パラメータ N および M を持つテンプレート クラス行列を考えます。 Matrix と同等の次元を持つ "Vector" (列ベクトル)、typedef は次のとおりです。望ましい:

typedef Matrix<N,1> Vector<N>;
ログイン後にコピー

ただし、このアプローチではコンパイル エラーが発生します。

代替案と解決策

C 11 ではエイリアス宣言が導入されています は typedef を一般化して許可しますtemplate:

template <size_t N>
using Vector = Matrix<N, 1>;
ログイン後にコピー

C 11 以降では、型 Vector<3> は、 Matrix<3, 1> と同等です。

C 03 の回避策

C 11 より前の場合、次の近似があります:

template <size_t N>
struct Vector
{
    typedef Matrix<N, 1> type;
};
ログイン後にコピー

ここで、Vector::type は以下と同等です。マトリックス。

以上がC で変更されたテンプレート クラスのテンプレート Typedef を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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