Maison >développement back-end >C++ >Résoudre le problème « erreur : utilisation de la fonction supprimée 'fonction' » dans le code C++

Résoudre le problème « erreur : utilisation de la fonction supprimée 'fonction' » dans le code C++

王林
王林original
2023-08-26 11:04:444351parcourir

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

Résoudre le problème "Erreur : utilisation de la fonction 'fonction' supprimée" dans le code C++

En programmation C++, nous rencontrons souvent diverses erreurs de compilation. L'une des erreurs courantes est « erreur : utilisation de la fonction supprimée « fonction » ». Cette erreur signifie généralement que nous utilisons une fonction dans notre code qui a été supprimée. Cet article décrira certaines causes courantes de cette erreur et comment la résoudre, et fournira quelques exemples de code à titre de référence.

Il existe de nombreuses raisons pour cette erreur. Voici quelques raisons courantes :

  1. Utilisation d'une fonction supprimée. Parfois, nous pouvons utiliser certaines fonctions supprimées dans le code. Cela est souvent dû à l'utilisation de bibliothèques obsolètes ou à des modifications dans l'interface des fonctions.
  2. Aucun constructeur de copie approprié n'est défini pour la classe. En C++, par défaut, le compilateur génère un constructeur de copie pour une classe. Cependant, si notre classe contient des variables membres spéciales ou utilise des structures de données dynamiques telles que des pointeurs, nous devons alors définir nous-mêmes le constructeur de copie. Si nous ne définissons pas un constructeur de copie approprié pour la classe, le compilateur utilisera par défaut le constructeur de copie supprimé, provoquant cette erreur.
  3. Utilisation du constructeur par défaut supprimé. Dans certains cas, nous devrons peut-être personnaliser le constructeur par défaut. Si aucun constructeur par défaut n'est défini pour une classe, le compilateur en génère un par défaut. Cependant, si notre classe contient des variables membres qui ne peuvent pas être initialisées par défaut, nous devons alors définir nous-mêmes un constructeur par défaut. Si nous ne définissons pas un constructeur par défaut approprié pour la classe, le compilateur utilisera par défaut le constructeur par défaut supprimé, provoquant cette erreur.

Voici quelques façons de corriger cette erreur :

  1. Vérifiez si la fonction utilisée a été supprimée. Si nous utilisons une fonction supprimée dans notre code, nous pouvons envisager de la remplacer par une autre fonction ou bibliothèque, ou implémenter manuellement la fonctionnalité requise.
  2. Vérifiez si un constructeur de copie approprié est défini pour la classe. Si notre classe contient des variables membres spéciales ou utilise des structures de données dynamiques telles que des pointeurs, nous devons alors définir notre propre constructeur de copie pour garantir que l'objet est copié correctement.
  3. Vérifiez si un constructeur par défaut approprié est défini pour la classe. Si notre classe contient des variables membres qui ne peuvent pas être initialisées par défaut, nous devons alors définir nous-mêmes le constructeur par défaut pour garantir que l'objet est correctement initialisé.

Voici quelques exemples de code :

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

Dans le code ci-dessus, nous avons défini une classe appelée MyClass的类,其中包含一个int*类型的成员变量data. Afin d'éviter l'erreur « erreur : utilisation de la fonction supprimée 'fonction' », nous définissons un constructeur de copie et un constructeur par défaut pour garantir l'initialisation et la copie correctes de l'objet.

Lorsque nous exécutons le code ci-dessus, le résultat sera :

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

En définissant correctement le constructeur approprié, nous pouvons résoudre l'erreur "erreur : utilisation de la fonction supprimée 'fonction'" et garantir l'exactitude du code.

Pour résumer, lorsque nous rencontrons l'erreur « erreur : utilisation de la fonction supprimée 'fonction' » dans le code C++, nous devons vérifier soigneusement le code pour déterminer la cause spécifique et ajouter, réécrire ou remplacer les fonctions pertinentes si nécessaire. pour résoudre le problème. Comprendre et résoudre correctement cette erreur améliorera notre expérience et nos compétences en programmation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn