请考虑这个类:是否有可能从参数
class A
{
public: //public in this example
string a1;
string a2;
string a3;
string a4;
int a5;
double a6;
(...) plus other 50 member names
multiset<string> getAttrib(const vector(A)& va, string attr)
{
for (vector<string>::const_iterator ci = va.begin; ci != va.end(); ++ci) {
cout << ci->attr << endl; //ERROR
}
};
成员函数可以调用,如:
A a
a.getAttrib(vector_a, "a1");
这将导致一个错误。 Const class A has no member named 'attr'.
我不想写50个不同的case
陈述来达到上述想要的灵活性。 它可能以某种方式? 如果成员名称是私人的,可以使用公共成员函数来执行此操作吗?
除了class A
,我有六个其他类似的类,并希望有一个父类,将采取七个类中的任何一个向量,并可以返回所选成员名的值(或实际情况下multiset)。
非常相似,[我怎么可以使用动态方法在C++](HTTP://计算器.COM /问题/ 1463515 /何灿我用动态的方法,在-C)。 – 2011-04-06 15:38:51
您似乎已经注意到Python或其他语言,其中成员只是字典键。在C++中情况并非如此。无法通过编译时未知的名称访问成员。 – 2011-04-06 15:40:07
@Alexander Gessler:是的,Python和Php有过以前的经验。 – Luis 2011-04-06 16:10:11