头文件中的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
。我尝试在头文件的类定义中声明上述语句。但是我无法从另一个文件访问该类。谁能帮我声明一下哈希映射,这样我就可以跨文件访问它了。
考虑我的头文件,包括上面所说的语句,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;
或其他。
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 使用一个考虑到std::map中键值的滚动或换行的键
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 允许从 std::map 的密钥窃取资源?
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将重物插入std::map
- 使用通用值初始化 std::map,不重复
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++:当所有条目都保证是唯一时,替代 std::map
- 使用模板化的键类型定义 std::map,该键类型基于作为参数接收的函数
- 如果 KEY 是 std::list 或 std::vector 而不是值,那么 std::map 的默认行为是什么?
- 使用字符数组作为 Map 中的键
- C++如何创建 std::map
- C++ equivalent to Java Map getOrDefault?
- 从其他容器中移动构造"std::map"
- 如何使用 uint64_t 键类型从 std::map<int, std::string> 返回值?
- 将 std::map::emplace 与返回 shared_ptr 的函数一起使用是否正确?
- C++中 std::map 的运行时复杂度是多少?
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射