>  기사  >  백엔드 개발  >  C++ 코드에서 '오류: 삭제된 함수 'function' 사용' 문제 해결

C++ 코드에서 '오류: 삭제된 함수 'function' 사용' 문제 해결

王林
王林원래의
2023-08-26 11:04:444289검색

解决C++代码中出现的“error: use of deleted function 'function'”问题

C++ 코드에서 "오류: 삭제된 함수 '함수' 사용" 문제 해결

C++ 프로그래밍에서는 다양한 컴파일 오류가 자주 발생합니다. 일반적인 오류 중 하나는 "오류: 삭제된 함수 'function' 사용"입니다. 이 오류는 일반적으로 코드에서 제거된 함수를 사용하고 있음을 의미합니다. 이 문서에서는 이 오류의 몇 가지 일반적인 원인과 해결 방법을 설명하고 참조할 수 있는 몇 가지 코드 예제를 제공합니다.

이 오류에는 여러 가지 이유가 있습니다. 일반적인 이유는 다음과 같습니다.

  1. 삭제된 기능을 사용합니다. 때로는 코드에서 일부 삭제된 함수를 사용할 수도 있습니다. 이는 오래된 라이브러리를 사용하거나 함수 인터페이스가 변경되었기 때문인 경우가 많습니다.
  2. 클래스에 적합한 복사 생성자가 정의되어 있지 않습니다. C++에서는 기본적으로 컴파일러가 클래스에 대한 복사 생성자를 생성합니다. 그러나 클래스에 특수 멤버 변수가 포함되어 있거나 포인터와 같은 동적 데이터 구조를 사용하는 경우 복사 생성자를 직접 정의해야 합니다. 클래스에 적합한 복사 생성자를 정의하지 않으면 컴파일러는 기본적으로 삭제된 복사 생성자를 사용하므로 이 오류가 발생합니다.
  3. 삭제된 기본 생성자를 사용했습니다. 어떤 경우에는 기본 생성자를 사용자 정의해야 할 수도 있습니다. 클래스에 정의된 기본 생성자가 없으면 컴파일러는 기본적으로 생성자를 생성합니다. 그러나 클래스에 기본적으로 초기화할 수 없는 멤버 변수가 포함된 경우 기본 생성자를 직접 정의해야 합니다. 클래스에 적합한 기본 생성자를 정의하지 않으면 컴파일러는 삭제된 기본 생성자를 기본값으로 사용하므로 이 오류가 발생합니다.

다음은 이 오류를 해결하는 몇 가지 방법입니다.

  1. 사용된 기능이 제거되었는지 확인하세요. 코드에서 삭제된 함수를 사용하는 경우 이를 다른 함수나 라이브러리로 바꾸거나 필요한 기능을 수동으로 구현하는 것을 고려할 수 있습니다.
  2. 클래스에 적합한 복사 생성자가 정의되어 있는지 확인하세요. 클래스에 특수 멤버 변수가 포함되어 있거나 포인터와 같은 동적 데이터 구조를 사용하는 경우 개체가 올바르게 복사되도록 자체 복사 생성자를 정의해야 합니다.
  3. 클래스에 적합한 기본 생성자가 정의되어 있는지 확인하세요. 클래스에 기본적으로 초기화할 수 없는 멤버 변수가 포함된 경우 개체가 올바르게 초기화되도록 기본 생성자를 직접 정의해야 합니다.

다음은 몇 가지 코드 예제입니다.

#include <iostream>

class MyClass {
public:
    int* data;

    // 定义拷贝构造函数
    MyClass(const MyClass& other) {
        data = new int(*other.data);
        std::cout << "拷贝构造函数被调用" << std::endl;
    }

    // 定义默认构造函数
    MyClass() {
        data = new int(0);
        std::cout << "默认构造函数被调用" << std::endl;
    }
    
    ~MyClass() {
        delete data;
    }
};

int main() {
    MyClass obj1;
    MyClass obj2 = obj1; // 使用拷贝构造函数

    return 0;
}

위 코드에서는 MyClass的类,其中包含一个int*类型的成员变量data라는 클래스를 정의했습니다. "오류: 삭제된 함수 '함수' 사용" 오류를 방지하기 위해 복사 생성자와 기본 생성자를 정의하여 객체의 올바른 초기화 및 복사를 보장합니다.

위 코드를 실행하면 출력은 다음과 같습니다.

默认构造函数被调用
拷贝构造函数被调用

적절한 생성자를 올바르게 정의하면 "오류: 삭제된 함수 '함수' 사용" 오류를 해결하고 코드의 정확성을 보장할 수 있습니다.

결론적으로 C++ 코드에서 "오류: 삭제된 함수 '함수' 사용" 오류가 발생하면 코드를 주의 깊게 확인하여 구체적인 원인을 파악하고 필요에 따라 관련 함수를 추가, 다시 작성 또는 교체해야 합니다. 문제를 해결하기 위해. 이 오류를 올바르게 이해하고 해결하면 프로그래밍 경험과 기술이 향상됩니다.

위 내용은 C++ 코드에서 '오류: 삭제된 함수 'function' 사용' 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.