IStructure
多くのクラスから派生した基本クラスがあります。
これらのクラスの一部は、他のクラスを「参照」IStructure
します。たとえば、私のクラスには( からも派生する)class GuiButton : public IStructure
のメンバーがあります。Textstring
IStructure
今、私は要点をつかむことができるようにこれをキラキラと見ているだけです。を参照するテンプレート クラス '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
わかっていますが、参照がどのような型であるかを理解しやすく知ることができるので、本当にしたいと思っています。
これを達成するには、どのような方法がありますか?
ご協力いただきありがとうございます!
-アレックス