标题可能会令人困惑,但我可以说我有一个模板:
template <typename T, size_t offset>
struct offsetedIdxArray
{
//...
}
Run Code Online (Sandbox Code Playgroud)
在我创建一个实例后:
static const size_t offset(1701);
offsetedIdxArray<zmq::socket_t, offset> oia;
Run Code Online (Sandbox Code Playgroud)
有没有办法从中获取偏移变量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";
}
Run Code Online (Sandbox Code Playgroud)
否则,您可以添加静态常量或枚举数据成员,如其他帖子中所建议的那样.