好吧,我正在使用 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
函数插入新函数。
我不知道我是否正确地显示了问题,但我希望如此。感谢您的帮助。