Heim > Backend-Entwicklung > C++ > Warum tritt der C-Compiler-Fehler C2280 „Versuch, auf eine gelöschte Funktion zu verweisen' in Visual Studio 2015, aber nicht in 2013 auf?

Warum tritt der C-Compiler-Fehler C2280 „Versuch, auf eine gelöschte Funktion zu verweisen' in Visual Studio 2015, aber nicht in 2013 auf?

Patricia Arquette
Freigeben: 2024-10-27 12:14:02
Original
850 Leute haben es durchsucht

Why Does C   Compiler Error C2280

C-Compiler-Fehler C2280 „versucht, auf eine gelöschte Funktion zu verweisen“ in Visual Studio 2013 und 2015

In Visual Studio 2013 der folgende Code Snippet wird ohne Fehler kompiliert:

class A
{
public:
   A(){}
   A(A &&){}
};

int main(int, char*)
{
   A a;
   new A(a);
   return 0;
}
Nach dem Login kopieren

Das gleiche Code-Snippet erzeugt jedoch einen Fehler in Visual Studio 2015:

1>------ Build started: Project: foo, Configuration: Debug Win32 ------
1>  foo.cpp
1>c:\dev\foo\foo.cpp(11): error C2280: 'A::A(const A &)': attempting to reference a deleted function
1>  c:\dev\foo\foo.cpp(6): note: compiler has generated 'A::A' here
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Nach dem Login kopieren

Dies liegt daran, dass der C-Standard angibt, dass, wenn eine Klasse a deklariert Wenn Sie einen Kopierkonstruktor oder einen Verschiebungszuweisungsoperator verwenden, wird der implizit deklarierte Kopierkonstruktor als gelöscht definiert.

Um dieses Problem zu beheben, können Sie explizit einen Kopierkonstruktor und einen Kopierzuweisungsoperator bereitstellen:

class A
{
public:
   A(){}
   A(A &&){}
   A(const A&) = default;
   A& operator=(const A&) = default;
};
Nach dem Login kopieren

Dies ermöglicht Ihnen das Kopieren, Konstruieren und Kopieren von Objekten der Klasse A.

Das obige ist der detaillierte Inhalt vonWarum tritt der C-Compiler-Fehler C2280 „Versuch, auf eine gelöschte Funktion zu verweisen' in Visual Studio 2015, aber nicht in 2013 auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage