编译器错误 C3071

运算符“operator”只能应用于 ref 类或值类型的实例中

不能在本机类型上使用 CLR 运算符。 可以在 ref 类或 ref 结构(值类型)上使用运算符,但不可在本机类型(如 int)或本机类型的别名(如 System::Int32)上使用。 这些类型不能从 C++ 代码中以引用本机变量的方式进行装箱,因此无法使用此运算符。

有关详细信息,请参阅跟踪引用运算符

示例

以下示例生成 C3071。

// C3071.cpp
// compile with: /clr
class N {};
ref struct R {};

int main() {
   N n;
   %n;   // C3071

   R r;
   R ^ r2 = %r;   // OK
}