Slide 14
Slide 14 text
Findy Inc.
C言語でオブジェクト指向設計…
14
#include
#include
// "クラス"構造体の定義
typedef struct {
char message[50];
void (*print)(struct HelloWorld*); // メソッドを指す関数ポインタ
} HelloWorld;
// メソッド関数の定義
void printMessage(HelloWorld *self) {
printf("%s\n", self->message);
}
// "コンストラクタ"関数
void HelloWorld_init(HelloWorld *self, const char *msg) {
strncpy(self->message, msg, sizeof(self->message) - 1);
self->message[sizeof(self->message) - 1] = '\0'; // 文字列終端の確保
self->print = printMessage;
}
int main() {
// オブジェクトの生成と初期化
HelloWorld hw;
HelloWorld_init(&hw, "Hello, World!");
// メソッドの呼び出し
hw.print(&hw);
return 0;
}
ハードル高し!