さて、私は Map を使用してあらゆる種類のポインター (void*) を格納しており、それはスコープ オブジェクトで使用されています。これがスコープクラスです。
class Scope
{
protected:
Scope * parent;
MyMap* map;
public:
virtual void setParent(Scope* p)=0;
virtual Scope* getParent()=0;
virtual void setOwner(void * owner)=0;
virtual void * getOwner()=0;
virtual Symbol * get(char* name)=0;
virtual Symbol * get(char* name, Signature * sig)=0;
MyMap* getMap()const;
};
2つのクラスがありOrderedScope
、クラスDisorderedScope
を実装していScope
ます。
私のプロジェクトでは、すべてのデータを void* として保存しようとしており、それらを取得して適切な型にキャストしています。オブジェクトをその型にキャストすると、一部のデータが失われていることがわかりました。ここに私が得たものの写真があります。
Package
クラスにスコープがあることを明確にするためだけに。そして、そのスコープにFunction
s 型のオブジェクトを格納しています。したがって、関数を追加する場合は、最初にパッケージ オブジェクトを取得してから、その関数を使用しadd
て新しい関数を挿入する必要があります。
問題を正しく示したかどうかはわかりませんが、そうであることを願っています。あなたの助けに感謝します。