我正在学习OOP C,我想写相当于getter和setter。 我有以下结构。
typedef struct {
int item0;
int item1;
int item2;
etc...;
} ItemsStr;
typedef ItemsStr * ItemsPtr;
items_get_item(ItemsPtr item, itemname) {
return item->itemname;
}
我意识到语法无效但有没有办法完成上述操作? 我也意识到我可以写一个switch语句,但我想知道是否有办法使用传入的参数来进行deference。
答案 0 :(得分:0)
您可以使用offsetof()
:
int items_get_item(ItemsPtr items, size_t offset) {
return *(int*)((char*)items + offset);
}
然后来电者这样做:
items_get_item(items, offsetof(ItemsStr, item1))