C ++のコンストラクターを使用したテンプレート化されたtypedef構造体

ティファニー:

今のところこのコードはありますが、これは今のところ機能しているようですが、これまでのところ、構造体ごとに毎回複製を必要とするため、まったく同じ構造体をよりエレガントな方法で取得する方法があるのではないかと思っていました...目標は、エンディアンに従ってバイトを自動的にスワップするtypedef構造体を持つことです。

using ResourceHeader_t = struct ResourceHeader_s 
{
    uint32_t magic;
    uint32_t chunkVersion;
    uint32_t chunkSize;
};

template<bool bigEndian>
struct ResourceHeader : public ResourceHeader_s 
{
    ResourceHeader(ResourceHeader_t* ptr) : ResourceHeader_s(*ptr)
    {
        if (bigEndian)
        {
            LITTLE_BIG_SWAP(magic);
            LITTLE_BIG_SWAP(chunkVersion);
            LITTLE_BIG_SWAP(chunkSize);
        }
    }
};

使用例:

ResourceHeader<true> resourceHeader((ResourceHeader_t *)fileBuffer);
サムヴァルシャフチク:

typedef structC ++では宣言は必要ありませんこれはCの遺物です。

C ++では、、struct ResourceHeader_sor struct ResourceHeader_t、または単なるplainを宣言した後struct ResourceHeader、明示的ななしで同じシンボルを直接使用できますstruct

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

構造体のベクトルを介したc ++ネストされたイテレータの問題

分類Dev

テンプレート化されたクラスのネストされたクラスをC ++のテンプレートテンプレートパラメータとして使用する

分類Dev

C ++が派生構造体を使用して親テンプレート構造体をインスタンス化し、親テンプレートが子構造体の関数を呼び出すことができるのはなぜですか?

分類Dev

テンプレート化されたクラスのtypedefでのC ++エラー

分類Dev

C#の構造マップを介してインスタンス化されるクラスのコンストラクターを呼び出す方法

分類Dev

C ++の要素として構造体を持つテンプレートを使用した単一リンクリスト。

分類Dev

C ++でのテンプレート化されたエイリアスのTypedef

分類Dev

C#のC / C ++ DLLでネストされた構造体ポインターを使用する

分類Dev

Cのリスト内の構造体 - リンクされたリスト内に存在する構造体のメンバーを表示します

分類Dev

C-コンストラクター、構造体または構造体へのポインターを返す方が良いですか?

分類Dev

C ++テンプレートのインスタンス化中に元の構造体/クラス名を取得する

分類Dev

ネストされた構造体ポインターを使用したCセグメンテーション違反

分類Dev

構造体の特定のメンバーの操作を実行するための可変個引数テンプレートを使用したC ++テンプレートメタプログラミング

分類Dev

テンプレート化された省略記号コンストラクターC ++

分類Dev

Cでネストされた構造体ポインタのコードを生成する

分類Dev

非型テンプレートを持つ構造体のC ++インスタンス化

分類Dev

Cコンストラクター関数を使用して構造体の配列を作成します

分類Dev

異なるテンプレートパラメータ値を持つテンプレート構造体のC ++アクセス保護メンバー

分類Dev

CRTPテンプレートのコンストラクターを使用したC ++-テンプレート基本クラス

分類Dev

C / C ++。bt(バイナリテンプレート)の構造体のようなラップされた関数をJava8に変換する

分類Dev

テンプレートクラスのインスタンス化されたオブジェクトのC ++テンプレートメタ関数

分類Dev

C ++ 17の `constexpr if`を使用したこのテンプレート構造体がMSVCでのコンパイルに失敗するのはなぜですか?

分類Dev

C ++で追加のテンプレートパラメータを使用してテンプレート構造体を拡張する

分類Dev

c ++クラステンプレートはインスタンス化できますが、同じテンプレートパラメータを使用した関数テンプレートのインスタンス化は失敗します

分類Dev

C ++の概念:「concept」を使用してテンプレート化された構造体のプロパティを確認するにはどうすればよいですか?

分類Dev

テンプレート化された型をC ++の特定のクラス/型と比較します

分類Dev

C#構造体とストリーミングされたDelphiレコードの1:1アラインメントは可能ですか?

分類Dev

テンプレート化されたリンクリストを使用したC ++スタック-メモリリーク

分類Dev

ifステートメントを使用したC ++テンプレートのインスタンス化

Related 関連記事

  1. 1

    構造体のベクトルを介したc ++ネストされたイテレータの問題

  2. 2

    テンプレート化されたクラスのネストされたクラスをC ++のテンプレートテンプレートパラメータとして使用する

  3. 3

    C ++が派生構造体を使用して親テンプレート構造体をインスタンス化し、親テンプレートが子構造体の関数を呼び出すことができるのはなぜですか?

  4. 4

    テンプレート化されたクラスのtypedefでのC ++エラー

  5. 5

    C#の構造マップを介してインスタンス化されるクラスのコンストラクターを呼び出す方法

  6. 6

    C ++の要素として構造体を持つテンプレートを使用した単一リンクリスト。

  7. 7

    C ++でのテンプレート化されたエイリアスのTypedef

  8. 8

    C#のC / C ++ DLLでネストされた構造体ポインターを使用する

  9. 9

    Cのリスト内の構造体 - リンクされたリスト内に存在する構造体のメンバーを表示します

  10. 10

    C-コンストラクター、構造体または構造体へのポインターを返す方が良いですか?

  11. 11

    C ++テンプレートのインスタンス化中に元の構造体/クラス名を取得する

  12. 12

    ネストされた構造体ポインターを使用したCセグメンテーション違反

  13. 13

    構造体の特定のメンバーの操作を実行するための可変個引数テンプレートを使用したC ++テンプレートメタプログラミング

  14. 14

    テンプレート化された省略記号コンストラクターC ++

  15. 15

    Cでネストされた構造体ポインタのコードを生成する

  16. 16

    非型テンプレートを持つ構造体のC ++インスタンス化

  17. 17

    Cコンストラクター関数を使用して構造体の配列を作成します

  18. 18

    異なるテンプレートパラメータ値を持つテンプレート構造体のC ++アクセス保護メンバー

  19. 19

    CRTPテンプレートのコンストラクターを使用したC ++-テンプレート基本クラス

  20. 20

    C / C ++。bt(バイナリテンプレート)の構造体のようなラップされた関数をJava8に変換する

  21. 21

    テンプレートクラスのインスタンス化されたオブジェクトのC ++テンプレートメタ関数

  22. 22

    C ++ 17の `constexpr if`を使用したこのテンプレート構造体がMSVCでのコンパイルに失敗するのはなぜですか?

  23. 23

    C ++で追加のテンプレートパラメータを使用してテンプレート構造体を拡張する

  24. 24

    c ++クラステンプレートはインスタンス化できますが、同じテンプレートパラメータを使用した関数テンプレートのインスタンス化は失敗します

  25. 25

    C ++の概念:「concept」を使用してテンプレート化された構造体のプロパティを確認するにはどうすればよいですか?

  26. 26

    テンプレート化された型をC ++の特定のクラス/型と比較します

  27. 27

    C#構造体とストリーミングされたDelphiレコードの1:1アラインメントは可能ですか?

  28. 28

    テンプレート化されたリンクリストを使用したC ++スタック-メモリリーク

  29. 29

    ifステートメントを使用したC ++テンプレートのインスタンス化

ホットタグ

アーカイブ