cppないしcocos2d-xには、
Javaで言うinterfaceクラス、Objective-Cで言うprotocolみたいなものは作成出来ません。
では、そう言ったものを作成したい場合はどうするかと言うと仮想関数なるものを使用します。
仮想関数ってのは修飾子virtualのついた関数の事です。
詳しくはこちらのブログをどうぞ。
修飾子virtualとは?
純粋仮想関数
更にこの仮想関数、宣言部の最後に「=0」を付けてあげると純粋仮想関数と言う関数になります。
この純粋仮想関数はかなり大きい二つの意味を持ちます。
・純粋仮想関数を含むクラスは抽象クラスとなる
・純粋仮想関数を含むクラスの派生クラスでは必ずこれをオーバーライドしなければいけない
つまり、この一番目の性質を利用してinterfaceクラスを作成します。
class HogeDelegate
{
public:
virtual void didHoge()=0;
}
当然、純粋仮想関数を含むクラスは抽象クラスとなりますのでインスタンス化出来ません。
Allocating an object of abstract class type HelloWorld::HogeDelegate
抽象クラスのallocateは出来ませんぜ
って言ってますね。
つまり、cppでは直接的にインターフェースクラスを定義するのではなく、インスタンス化させないと言った方法で間接的にインターフェースクラスを定義する事になります。
※この「=0」を外してやるとインスタンス化は出来ます。
誰かのお役に立てば。
コメント