编译器错误 C2675

一元“operator”:“type”不定义该运算符或到预定义运算符可接收类型的转换

使用一元运算符时也可能发生 C2675,并且类型不定义运算符或到预定义运算符可接收类型的转换。 要使用该运算符,必须针对指定类型将其重载,或者定义一个到某个类型(该运算符已针对此类型进行了定义)的转换。

示例

下面的示例生成 C2675。

// C2675.cpp
struct C {
   C(){}
} c;

struct D {
   D(){}
   void operator-(){}
} d;

int main() {
   -c;   // C2675
   -d;   // OK
}