今のところこのコードはありますが、これは今のところ機能しているようですが、これまでのところ、構造体ごとに毎回複製を必要とするため、まったく同じ構造体をよりエレガントな方法で取得する方法があるのではないかと思っていました...目標は、エンディアンに従ってバイトを自動的にスワップする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 struct
C ++では宣言は必要ありません。これはCの遺物です。
C ++では、、struct ResourceHeader_s
or struct ResourceHeader_t
、または単なるplainを宣言した後struct ResourceHeader
、明示的ななしで同じシンボルを直接使用できますstruct
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加