我正在 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/