我有一个C类应该有一些成员。但是这个成员应该自动添加到地图中,这样我就可以通过字符串轻松访问它们。C++通过字符串在类中调用成员
这样的想法是有一个结构称为参数和结构保存到一个地图或其他什么东西......
但我不舒尔我应该如何使用地图。我的想法是用指向成员值的指针创建一个映射。但是如何在struct构造函数中初始化这个成员?
template <typename C>
struct parameter {
typedef int (parameter::*mfp)(int);
static std::map<std::string, mfp> registered_parameter;
parameter(std::string name) {
// todo...
}
// parameter overloading code and something other here ...
};
该模板是为每个类都有一个静态地图。 C1和C2类应该有不同的地图。
C1 could be look:
class C1: public C {
parameter<C1> x("x");
parameter<C1> y("y");
}
而且,如果我做这样的事情:
C1 c1_1;
C1 c1_2;
// should be different x
c1_1.x = 2
c1_2.x = 3
C++不能这样工作。 –
'mfp'是成员函数的指针,而不是指向成员值的指针。 'parameter'没有任何'mfp'可指向的成员。 'c1_1.x'是一个'parameter',但它没有'operator =(int)'来产生'c1_1.x = 2;'compile。请尝试充实这个问题,并展示一个您想要编写的代码示例,假定'parameter'完成您想要的任务。目前你的例子没有做任何事情。 – nwp
C类中有参数struct我虽然我不需要像重载一样写这个,因为它显然必须有操作符重载。 @nwp我的观点是,我不知道如何将“this”添加到地图中,因此我可以很容易地通过字符串得到它 – R3Tech