c++ - 如何从头文件将运算符定义添加到现有结构?

标签 c++ visual-c++ hashmap operator-overloading

我正在 Windows 中开发 SNMP 代理。在头文件 snmp.h 中,有一个 struct 定义了值的 OID 标识符,其定义如下:

typedef struct {
  UINT   idLength;
  UINT * ids;
} AsnObjectIdentifier; 

我想使用此 AsnObjectIdentifier 作为 unordered_map 的键,但 struct 定义不会重载 == 运算符,这让我想到一个问题:是否可以将运算符重载添加到已定义的 struct 中,或者我是否必须拥有自定义的 struct包装 AsnObjectIdentifier 变量。

最佳答案

是的,您可以在类之外定义运算符:

bool operator==(AsnObjectIdentifier const& lhs, AsnObjectIdentifier const& rhs)
{
    return /* whatever */;
}

或者,您可以定义自定义相等函数对象并将其传递给 unordered_map 的第四个模板参数。

关于c++ - 如何从头文件将运算符定义添加到现有结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58061721/

相关文章:

c# - 如何将 C++ 数字格式转换为 C# 数字格式?

c++ - 派生类调用时的虚函数性能?

c++ - 公共(public)访问声明不影响成员函数指针?

c++ - VC++ wcscpy_s 在 "Buffer is too small"上随机断言

c++ - 强制 C++ 程序在 Visual Studio 调试器中暂停

Java堆空间: Hashmap, ArrayList

java - 如何在 Hashmap<Hashmap<ArrayList>> 中存储位置索引和文档 ID

java - 哈希集实现

c++ - 如何在自定义容器中支持范围适配器?

c++ - Lua_hook 和 lua_Debug->event