Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Selesaikan masalah "ralat: penggunaan fungsi 'fungsi'" yang dipadam dalam kod C++

Selesaikan masalah "ralat: penggunaan fungsi 'fungsi'" yang dipadam dalam kod C++

王林
王林asal
2023-08-26 11:04:444149semak imbas

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

Selesaikan masalah "error: use of deleted function 'function'" dalam kod C++

Dalam pengaturcaraan C++, kita sering menghadapi pelbagai ralat kompilasi. Salah satu ralat biasa ialah "ralat: penggunaan 'fungsi' fungsi yang dipadam". Ralat ini biasanya bermakna kami menggunakan fungsi dalam kod kami yang telah dialih keluar. Artikel ini akan menerangkan beberapa punca biasa ralat ini dan cara menyelesaikannya serta menyediakan beberapa contoh kod untuk rujukan.

Terdapat banyak sebab untuk ralat ini Berikut adalah beberapa sebab biasa:

  1. Menggunakan fungsi yang dipadamkan. Kadangkala kami mungkin menggunakan beberapa fungsi yang dipadam dalam kod Ini selalunya disebabkan oleh penggunaan perpustakaan yang sudah lapuk atau perubahan dalam antara muka fungsi.
  2. Tiada pembina salinan yang sesuai ditentukan untuk kelas. Dalam C++, secara lalai, pengkompil menjana pembina salinan untuk kelas. Walau bagaimanapun, jika kelas kami mengandungi beberapa pembolehubah ahli khas atau menggunakan struktur data dinamik seperti penunjuk, maka kami perlu menentukan sendiri pembina salinan. Jika kita tidak mentakrifkan pembina salinan yang sesuai untuk kelas, pengkompil akan lalai menggunakan pembina salinan yang dipadam, menyebabkan ralat ini.
  3. Menggunakan pembina lalai yang dipadamkan. Dalam sesetengah kes, kita mungkin perlu menyesuaikan pembina lalai. Jika tiada pembina lalai ditakrifkan untuk kelas, pengkompil menjana satu secara lalai. Walau bagaimanapun, jika kelas kami mengandungi pembolehubah ahli yang tidak boleh dimulakan secara lalai, maka kami perlu menentukan sendiri pembina lalai. Jika kita tidak mentakrifkan pembina lalai yang sesuai untuk kelas, pengkompil akan lalai kepada pembina lalai yang dipadam, menyebabkan ralat ini.

Berikut ialah beberapa cara untuk membetulkan ralat ini:

  1. Periksa sama ada fungsi yang digunakan telah dialih keluar. Jika kami menggunakan fungsi yang dipadamkan dalam kod kami, kami boleh mempertimbangkan untuk menggantikannya dengan fungsi atau perpustakaan lain, atau melaksanakan fungsi yang diperlukan secara manual.
  2. Semak sama ada pembina salinan yang sesuai ditakrifkan untuk kelas. Jika kelas kami mengandungi beberapa pembolehubah ahli khas atau menggunakan struktur data dinamik seperti penunjuk, maka kami perlu menentukan pembina salinan kami sendiri untuk memastikan objek disalin dengan betul.
  3. Semak sama ada pembina lalai yang sesuai ditakrifkan untuk kelas. Jika kelas kami mengandungi pembolehubah ahli yang tidak boleh dimulakan secara lalai, maka kami perlu menentukan sendiri pembina lalai untuk memastikan objek dimulakan dengan betul.

Berikut ialah beberapa contoh kod:

#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;
}

Dalam kod di atas, kami mentakrifkan kelas yang dipanggil MyClass的类,其中包含一个int*类型的成员变量data. Untuk mengelakkan ralat "ralat: penggunaan fungsi 'fungsi' yang dipadam", kami mentakrifkan pembina salinan dan pembina lalai untuk memastikan pemulaan dan penyalinan objek yang betul.

Apabila kita menjalankan kod di atas, outputnya ialah:

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

Dengan mentakrifkan pembina yang sesuai dengan betul, kita boleh menyelesaikan ralat "ralat: penggunaan fungsi 'fungsi'" yang dipadam dan memastikan ketepatan kod.

Ringkasnya, apabila kita menghadapi ralat "ralat: penggunaan fungsi 'fungsi' yang dipadam" dalam kod C++, kita perlu menyemak kod tersebut dengan teliti untuk menentukan punca tertentu, dan menambah, menulis semula atau menggantikan fungsi yang berkaitan mengikut keperluan. untuk Menyelesaikan masalah. Memahami dan menyelesaikan ralat ini dengan betul akan meningkatkan pengalaman dan kemahiran kami dalam pengaturcaraan.

Atas ialah kandungan terperinci Selesaikan masalah "ralat: penggunaan fungsi 'fungsi'" yang dipadam dalam kod C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn