头文件中的WX_DECLARE_HASH_MAP

WX_DECLARE_HASH_MAP in header file

本文关键字:DECLARE MAP HASH WX 文件      更新时间:2023-10-16

在我的Visual Studio 2010解决方案中,我有一个用C++编写的项目。我在项目中使用了wxwidgets3.0.2库,并在我的一个c++文件中有以下行,它编译得很好。

WX_DECLARE_HASH_MAP (wxString,INode*,wxStringHash,wxStringEqual,IEval);

现在,我需要访问另一个cpp文件中的class IEval。我尝试在头文件的类定义中声明上述语句。但是我无法从另一个文件访问该类。谁能帮我声明一下哈希映射,这样我就可以跨文件访问它了。

编辑:

考虑我的头文件,包括上面所说的语句,Class1.h如下所示:

class Class1
{
   public:
    int GetCount();
    bool MapExist();
    WX_DECLARE_HASH_MAP (wxString,INode*,wxStringHash,wxStringEqual,IEval);
 private:
  int ent_val;
   int Openfile();
}

我可以从Class1.cpp访问所有成员变量/函数。现在在Class2.cpp中,我创建了一个类Class1的对象,比如c1。现在,在尝试使用.操作符访问成员时(VS列出了输入ctrl+space时可以调用的所有可能的成员)。但是这里没有列出eval),它说eval没有定义。

我尝试在头文件中定义映射,但不是在这个类中。即使我不能获取存储在映射中的值,也可以声明c1。

首先,如果您正在编写新代码,您应该真正使用std::unordered_map<>而不是wxWidgets遗留的宏。

其次,如果您绝对需要使用WX_DECLARE_HASH_MAP(),那么您需要意识到它声明了一个IEval 类型,而不是一个具有此名称的变量。然后您可以声明您的地图IEval my_map;或其他。