编译器错误 C3073

“type”: ref 类没有用户定义的复制构造函数

/clr(公共语言运行时编译)编译中,编译器不会为引用类型生成复制构造函数。 在任意 /clr 编译中,如果希望复制类型的实例,则必须为引用类型定义自己的复制构造函数

有关详细信息,请参阅引用类型的 C++ 堆栈语义

示例

下面的示例生成 C3073。

// C3073.cpp
// compile with: /clr
ref class R {
public:
   R(int) {}
};

ref class S {
public:
   S(int) {}
   S(const S %rhs) {}   // copy constructor
};

void f(R) {}
void f2(S) {}
void f3(R%){}

int main() {
   R r(1);
   f(r);   // C3073
   f3(r);   // OK

   S s(1);
   f2(s);   // OK
}