我正在努力进行一些模板编程,希望你能给我一些帮助.我编写了一个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