請考慮這個類:是否有可能從參數
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