ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

拡張装備(プラグイン) 夢幻召喚(インストール)!!! あれ?C++のプライグイン実装ってめんどくさい

『拡張装備(プラグイン) 夢幻召喚(インストール)!!!』

...あれ?なんかエラーになってるんですけど

イリヤさん mainの実装(詠唱)を忘れていますよ。Pluginの型を用意して、どう使うかちゃんと唱えてください

うん、わかった

「──告げる! 汝の身は我に! 汝の剣は我が手に! 聖杯のよるべに従い この意この理に従うならば応えよ! 誓いを此処に! 我は常世総ての善と成る者! 我は常世総ての悪を敷く者──! 汝 三大の言霊を纏う七天! 抑止の輪より来たれ 天秤の守り手──!」

『拡張魔法(プラグイン) 夢幻召喚(インストール)!!!』

エクスカリバーーーーー!!!!!!』

今度はうまくいった...

ちょっと待って、新たにプラグイン追加したら拡張魔法の詠唱(mainの実装)を変更しないとダメなの?

関数名が違ったらそうなりますね。 そうならないように各々のプラグインのインターフェースを内包したスーパークラス(インターフェース)を用意する必要があります。

いんたーふぇーす?

インターフェースとはつなぎ目のことです。プログラムを結びつける役割を果たします。 予めヘッダに定義したり、スーパークラス(インターフェースクラス)を継承させたりして、呼び出す側と呼び出される側で同一の関数名(メソッド)を定義します。

剣士(セイバー)、弓兵(アーチャー)、魔術師(キャスター)というプラグインがあるとして、各々のプラグインのメソッドがえSlash(エクスカリバー)、Shoot、Unleashのように別名で定義すると詠唱(mainの実装)を変更する必要があります。 しかし、FightやActionというようにエントリーポイントを共通にしてやれば詠唱を変更しなくても大丈夫です。

また、今回の場合のスーパークラス(インターフェースクラス)はSprit(英霊)ですね。 SptritPluginPtrと命名すれば、どのプラグインをインストールしても拡張魔法の詠唱を変更しないで済みます。

インターフェースクラスは最初にIがというプレフィックスが付くことが多いです。 IActionとか

わかった、じゃあこうする

『アクショーン!!!!!』

ってダサいよこれ!!

わがままですね イリヤさん ではさらに、機能インターフェースプラグインを用意するというのはどうでしょう?

まずは「エクスカリバー」「カリバーン」「インビジブル・エア」プラグインを作ってみましょう