嗨!爲了它的樂趣,我一直在做這些最後兩天的試驗,在純C中創建一個非常簡單,非常直接的對象環境。我一直在用宏,動態鏈接,類型描述結構我已經到達以下:
string_o str = new(String, "hello world");
list_o list = new(List);
List.pushf(list, str);
printf("In the list: \"%s\"\n",
String.text(List.popf(list)));
delete(list);
delete(str);
看起來和工作挺好,但我不能想出一個方法來僞造實例方法。我不能通過Class.function(instance)
,而不是沒有全局宏替換功能名稱,這破壞了封裝的目的。
再次,這是一個實驗,只是爲了挑戰和樂趣=)。你們能幫我找出一個辦法嗎?我不想使用額外的預處理,只有簡單的C和GCC宏。
編輯>忘了說 - 我不希望每個實例在其結構中包含函數指針。這會給我方法的語法好,但這意味着一個4字節的數據對象將有十幾個函數指針複製到每個實例。這有點像作弊= P哈哈
在此先感謝!
是不是他們爲什麼創建cpp?:P – Tobias 2010-11-05 05:03:24
將每個「類」與調用「成員函數」時執行的函數指針表相關聯? – birryree 2010-11-05 05:05:22
@Tobias:_shudder_,我希望不會! [C++:通過將額外的腿釘在狗身上製成的章魚。](http://en.wikiquote.org/wiki/Programming_languages#C.2FC.2B.2B) - Steve Taylor:P – 2010-11-05 05:06:21