以下面的示例为例,是否有一些通用的实践,也许是元编程,以避免重复的&::?
#include <iostream>
#include <cstdlib>
struct Data {
int a1;
float a2;
};
template <class T>
struct Packet {
T data;
template <class F, class V >
Packet& operator() ( F T::* field, V value)
{
return this->data.*field = value, *this;
}
template <class F >
const F& operator() ( F T::* field ) const
{
return this->data.*field;
}
};
int main()
{
Packet<Data> buffer;
buffer(&Data::a2, 4)(&Data::a1, 2);
std::cout << buffer(&Data::a2) << std::endl;
return 0;
}
Data
代表一组具有多种字段的结构,这些字段必须设置,但在编译时始终是已知的。