标题可能会令人困惑,但可以说我有一个模板:
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/