2014-10-11 69 views
0

我想修改對象數組的特定對象成員。因此,我打算在對象構件傳遞給將通過陣列迭代並修改指定的構件爲每個對象的方法:通過傳遞修改對象數組的特定對象成員

Object *objs[10]; 
if (condition) 
    modify_all(objs, Object.x, set_value); 

但我無法通過Object.x那樣。有沒有更好的方法來做到這一點? 我需要這樣的東西,因爲modfiy_all不知道要修改哪個成員。

編輯:我只是想重構數組的重複迭代。

+0

您可能可以使用模板來做到這一點,請參閱例如[這個問題](http://stackoverflow.com/q/672843/33499) – wimh 2014-10-11 21:00:32

+0

這聽起來有點複雜,但我會給它一試。謝謝! – lamino 2014-10-11 21:10:56

+0

是的,這很複雜,但你想做的事有點奇怪。根本不用一個函數,只需要一個for循環就可以了。如果你使用C++ 11,你可以使用帶lambda函數的回調來替代。 – wimh 2014-10-11 21:21:59

回答

0

您可以傳遞char或int而不是對象成員,並且該字符串或int將指定應修改哪個成員。例如:

Object *objs[10]; 
if (condition) 
    modify_all(objs, "x", set_value); 

Object *objs[10]; 
if (condition) 
    modify_all(objs, 0, set_value); 

裏面modify_all您可以使用基於此參數發送switch語句。

+0

是的,我想過這樣做。不過,我有大約12個對象成員,並且將它們與整數或字符匹配會讓人困惑。 – lamino 2014-10-11 20:57:13

+0

您可以使用ENUM來更好地識別它們,而不會感到困惑 – 2014-10-11 20:58:55

+0

您需要提供成員變量和參數值之間的映射。 – 2014-10-11 21:07:40