template <typename T, size_t offset>
struct offsetedIdxArray
{
//...
}
在我创建实例后:
static const size_t offset(1701);
offsetedIdxArray<zmq::socket_t, offset> oia;
有没有办法从oia
获得偏移量变量。我知道我可以使用偏移但是从代码风格的角度来看,如果可能的话,我更愿意从oia
获取它。
答案 0 :(得分: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";
}
否则,您可以按照其他帖子的建议添加静态常量或枚举数据成员。
答案 1 :(得分:3)
template <typename T, size_t offset>
struct offsetedIdxArray
{
static const size_t off = offset;
//...
};
并获取变量off
。