标题可能会令人困惑,但可以说我有一个模板:

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


在创建实例之后:

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


有没有办法从oia获取偏移量变量。我知道我可以只使用偏移量,但是从代码样式的角度来看,我更愿意从oia中获取它。

编辑:我正在寻找一种方法来获取偏移量,而无需在结构内使用辅助变量...

最佳答案

如果要从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";

}


否则,您可以按照其他文章中的建议添加静态常量或枚举数据成员。

关于c++ - 如何获取整数模板参数的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12314807/

10-11 11:55