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 回答