0

タイトルは紛らわしいかもしれませんが、テンプレートがあるとしましょう:

template <typename T, size_t offset>
struct offsetedIdxArray
{
//...
}

そして、インスタンスを作成した後:

static const size_t offset(1701);
offsetedIdxArray<zmq::socket_t, offset> oia;

からオフセット変数を取得する方法はありますかoia。オフセットを使用できることはわかっていますが、コード スタイルの観点からoia、可能であればそれを取得することを好みます。

編集:構造体内のヘルパー変数なしでオフセットを取得する方法を探しています...

4

2 に答える 2

5

クラステンプレートにメンバーを追加せずにオブジェクトから情報を取得する場合offsetedIdxArray<T,N>は、テンプレート関数を使用できます。

#include <iostream>
#include <cstddef>

template <typename T, size_t offset>
struct offsetedIdxArray
{
};

template <typename T, size_t offset>
size_t getOffset(const offsetedIdxArray<T, offset>&) {
  return offset;
}

int main()
{
   offsetedIdxArray<int,5> oia;
   std::cout << getOffset(oia) << "\n";

}

それ以外の場合は、他の投稿で提案されているように、静的定数または列挙型データメンバーを追加できます。

于 2012-09-07T09:02:46.807 に答える
3
template <typename T, size_t offset>
struct offsetedIdxArray
{
   static const size_t off = offset;
//...
};

変数を取得しますoff

于 2012-09-07T08:54:46.143 に答える