我想在C.探索OOP不過,我一個C的n00b,並想挑計算器:)輝煌的大腦OOP在C,實施和錯誤
我的代碼如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct speaker {
void (*say)(char *msg);
} speaker;
void say(char *dest) {
printf("%s",dest);
}
speaker* NewSpeaker() {
speaker *s;
s->say = say;
return s;
}
int main() {
speaker *s = NewSpeaker();
s->say("works");
}
但是,我得到一個段錯誤,如果我然而刪除所有參數,並使其無效,我可以讓它正常工作。我現在的代碼有什麼問題?
另外。雖然這在C中實現了一種對象形式,但我試圖通過繼承來進一步實現它,甚至覆蓋/重載方法。你如何看待我可以實現這樣的?
謝謝!
這些都是3個很好的答案!我選擇了最高的答案,並且我給了你們所有人的讚揚,謝謝!我從來沒有想過自己。 – nubela