オブジェクト指向で何でもいいので何かサンプル書ける人いたら教えてほしいです、C言語で。

ベストアンサー

2

2人がナイス!しています

ThanksImg質問者からのお礼コメント

動画での語り口調が軽妙で面白かったですw

お礼日時:3/2 19:48

その他の回答(4件)

0

C言語によるオブジェクト指向のサンプルです GCC でノーワーニング,ノーエラーです カモノハシ本の例題をやってみました(暇だなオレ) ///////////////////// // general type typedef enum bool { TRUE = (0==0), FALSE = !TRUE } bool; ///////////////////// // template like macro for class method #define SendFlowerTo(class) \ int class##_SendFlowerTo(class * THIS, cPerson * target) // SendFlowerToメソッドを 各クラスそれぞれに宣言するのはメンドイので マクロでごまかす ///////////////////////////////////// // class & class method // cAddr class // cAddrのみ循環参照による前方参照を避けるため method定義は後に有ります typedef struct cAddr{ int dmy; }cAddr; // cFlower typedef struct cFlower{ int dmy; }cFlower; // cPerson typedef struct cPerson{ int dmy; }cPerson; SendFlowerTo(cPerson); bool cPerson_IsRich(cPerson * THIS); // cFlowerShop typedef struct cFlowerShop{ int dmy; }cFlowerShop; SendFlowerTo(cFlowerShop); cFlower cFlowerShop_Get(cFlowerShop * THIS); // cFlowerChain typedef struct cFlowerChain{ int dmy; }cFlowerChain; SendFlowerTo(cFlowerChain); cFlowerShop cFlowerChain_selectShop(cFlowerChain * THIS, cAddr * ); // cClerk // 店員 typedef struct cClerk{ int dmy; }cClerk; int cClerk_Deliver(cClerk * THIS, cFlower *); // cAddr method bool cAddr_IsInThisAddr(cAddr *THIS, cAddr * ); void cAddr_SetPerson (cAddr * THIS, cPerson *); void cAddr_SetFlowerShop (cAddr * THIS, cFlowerShop *); 続く

0

オブジェクト指向はよく知らないので違ってたらごめんね(^^; #include <stdio.h> static int add_(int x, int y) {return x+y;} static int sub_(int x, int y) {return x-y;} static int mlt_(int x, int y) {return x*y;} struct {   int (*add)(int, int);   int (*sub)(int, int);   int (*mlt)(int, int); } Int = {add_, sub_, mlt_}; int main(void){   int a,b;   scanf ("%d%d",&a,&b);   printf("%d+%d=%d\n", a, b, Int.add(a,b));   printf("%d-%d=%d\n", a, b, Int.sub(a,b));   printf("%d*%d=%d\n", a, b, Int.mlt(a,b)); }

1

C言語はオブジェクト指向に対応していません。 C言語は何でもできるのが特徴ですが、 それ故に、 オブジェクト指向の何でも自由にはできない特性を再現する事はできません。

1人がナイス!しています