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# - Visual Studio 2008/2010 错误/问题列表

Java - 映射键查找忽略大小写

c++ - std::array<int> 迭代器可以在 clang 上转换为 int* 但不能在 MSVC 上转换?

ruby - 如何删除散列中的数组

java - Map的Key的大小有影响吗?

c++ - 从另一个命名空间访问标准命名空间数据成员

c++ - 在文件中搜索字符串

c++ - 关于使用 C++ 'new' 语法

c - 错误 C2059 : syntax error : 'bad suffix on number' with cl. exe vc 编译器