IStructure多くのクラスから派生した基本クラスがあります。
これらのクラスの一部は、他のクラスを「参照」IStructureします。たとえば、私のクラスには( からも派生する)class GuiButton : public IStructureのメンバーがあります。TextstringIStructure
今、私は要点をつかむことができるようにこれをキラキラと見ているだけです。を参照するテンプレート クラス 'Reference' が必要IStructureです。例えば:
class GuiButton : public IStructure {
public:
Reference<Textstring> Text;
};
なぜ私がやらないのか不思議に思う人もいると思いますTextstring* Text。これは、これらの参照の一部が「外部」であるためです。テンプレートクラスは、 (名前など)Referenceに関する情報のみを保持します。IStructureこれらのクラスの一部は非常に大きく、そのクラス全体をインスタンス化して、Nameプロパティのみを使用し、それを使用しないことは無意味です。それは理にかなっていますか?
だから今私の質問に:
class Textstring : public IStructure;
Textstringテンプレートを使用してa を参照できます。
Reference<Textstring> Text;
問題は次のとおりです。一部のメソッドでは、「IStructure」にアップキャストする必要があります。たとえば、次のようになります。
void RegisterReference(Reference<IStructure> &reference);
だから私はこれを行うことができませんでした:
Reference<Textstring> txt("TextName");
RegisterReference(txt); // error
テンプレートにしないことでこれを解決できることはReferenceわかっていますが、参照がどのような型であるかを理解しやすく知ることができるので、本当にしたいと思っています。
これを達成するには、どのような方法がありますか?
ご協力いただきありがとうございます!
-アレックス