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;
或其他任何内容。
在我的 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;
或其他任何内容。