WX_DECLARE_HASH_MAP 在头文件中

WX_DECLARE_HASH_MAP in header file

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

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

现在,我需要访问另一个 cpp 文件中的 class IEval。我尝试在头文件的 class 定义中声明上述语句。但是我无法从另一个文件访问 class。谁能帮我声明散列映射,以便我可以跨文件访问它。

编辑:

考虑我的头文件,包括上面所说的语句,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 的所有成员 variables/functions。现在在 Class2.cpp 中,我创建了一个 class Class1 的对象,比如 c1。现在尝试使用 . 运算符访问成员(VS 列出了输入 ctrl+space 时可以调用的所有可能成员。但此处未列出 IEval),它说 IEval 未定义。

我尝试在头文件中定义映射,但没有在头文件中定义映射 class。即使我无法获取存储在地图中的值,也可以在 Class2.cpp.

中声明 c1.IEval

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

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