成员指针的语法糖

时间:2019-03-11 09:37:46

标签: c++98

以下面的示例为例,是否有一些通用的实践,也许是元编程,以避免重复的&::?

#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代表一组具有多种字段的结构,这些字段必须设置,但在编译时始终是已知的。

0 个答案:

没有答案