furutatsuのメモ帳

ぼくがソフトウェアを設定したことや組んだプログラムを見返すためのブログです。

関数ポインタの変わった使い方?

強引にC言語の構造体をクラスにしてみました。

#include <stdio.h>

struct car {
 int num;
 double gas;
 void (*show)(int n, double g); /* 関数みたいなもの */
};

void showcar(int n, double g) {
 printf("車のナンバー:%d 燃料:%f\n", n, g);
}

int main(void) {
 struct car mal = {1234, 32.1, showcar};

 (*mal.show)(mal.num, mal.gas);
 return 0;
} 

本当は関数ポインタを使いたかっただけです。構造体の中に関数ポインタ型を定義することで、オブジェクト指向のクラスみたいになるんじゃないと思って書いてみました。

これは、車の番号と燃料の量を表示するプログラムですが、なんかC++効率が悪くなったような気がしました。

さらに、本格的にオブジェクト指向となると、多態性とか継承など考えなければいけませんが、実装は無理です。(できなくもないが大変だ・・・)