【发布时间】:2021-11-05 02:55:31
【问题描述】:
我正在尝试在结构中定义 == 运算符:
typedef struct _tBScan {
QString strQuadpackNumbers;
uint uintBegin, uintEnd;
bool operator==(const struct _tBScan& a, const struct _tBScan& b) {
return (a.strQuadpackNumbers.compare(b.strQuadpackNumbers) == 0 &&
a.uintBegin == b.uintBegin && a.uintEnd == b.uintEnd);
}
} tBScan;
这不会编译,我明白了:
C2804: binary 'operator ==' has too many parameters
C2333: '_tBScan::operator ==' error in function: declaration: skipping function body
我使用的是 Qt 5.9.2 和 MSVC 2015,我需要定义它以便使用 QList 比较函数。
【问题讨论】:
-
使其成为非成员函数。除了这两个参数之外,成员函数还需要调用一个实例。
-
@songyuanyao,你能解释一下吗,它必须定义为结构中的一个方法,就像它在QList中使用的那样
-
@SPlatten 它不必是成员,除非
QList出于某些邪恶原因使用x.operator==(y)而不是x == y。 -
@SPlatten 但它并不要求它是成员函数。这个纲要可能值得一读:stackoverflow.com/questions/4421706/…
-
C++ 中不需要
typedef struct ss {} sss。
标签: c++ operator-keyword