小编Man*_*ana的帖子

指向struct/class的递归成员的指针的变量序列作为模板参数

我正在努力进行一些模板编程,希望你能给我一些帮助.我编写了一个C++ 11接口,给出了一些结构,如:

struct Inner{
  double a;
};
struct Outer{
  double x, y, z, r;
  Inner in;
};
Run Code Online (Sandbox Code Playgroud)

对实际数据实现getter/setter,该数据是为指定的struct成员定制的:

MyData<Outer, double, &Outer::x,
                               &Outer::y, 
                               &Outer::z,
                               &Outer::in::a //This one is not working
              > state();

Outer foo = state.get();
//...  
state.set(foo);
Run Code Online (Sandbox Code Playgroud)

我设法通过以下方式为简单结构实现此功能:

template <typename T, typename U, U T::* ... Ms>
class MyData{
   std::vector<U *> var;
  public:
    explicit MyData();
    void set(T const& var_);
    T get() const;
};

template <typename T, typename U, U T::* ... Ms>
MyData<T, U, Ms ... >::Struct():var(sizeof...(Ms))
{
}

template …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming variadic-templates c++11

9
推荐指数
1
解决办法
215
查看次数