Visual Studio 2013 및 2015의 C 컴파일러 오류 C2280 "삭제된 함수 참조 시도"
Visual Studio 2013에서 다음 코드 코드 조각은 오류 없이 컴파일됩니다.
class A { public: A(){} A(A &&){} }; int main(int, char*) { A a; new A(a); return 0; }
그러나 동일한 코드 조각은 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 ==========
C 표준에서는 클래스가 이동 생성자 또는 이동 할당 연산자에서 암시적으로 선언된 복사 생성자는 삭제된 것으로 정의됩니다.
이 문제를 해결하려면 복사 생성자와 복사 할당 연산자를 명시적으로 제공할 수 있습니다.
class A { public: A(){} A(A &&){} A(const A&) = default; A& operator=(const A&) = default; };
이것은 클래스 A의 개체를 복사 구성하고 복사 할당할 수 있습니다.
위 내용은 C 컴파일러 오류 C2280 \'삭제된 함수 참조 시도 중\'이 Visual Studio 2015에서는 발생하지만 2013에서는 발생하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!