Поделиться через


Ошибка компилятора C3073

Type: класс ref не имеет определяемого пользователем конструктора копирования

В компиляции /clr (компиляция среды 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
}