Maison >développement back-end >C++ >Erreur C++ : plusieurs définitions, comment la modifier ?

Erreur C++ : plusieurs définitions, comment la modifier ?

王林
王林original
2023-08-21 20:31:441367parcourir

C++, en tant que langage de programmation de haut niveau, est largement utilisé notamment en informatique. Cependant, lors de l'écriture de programmes, nous rencontrons souvent des rapports d'erreurs, tels que des « définitions multiples ». Que devons-nous faire à ce moment-là ?

Tout d'abord, nous devons comprendre pourquoi des « définitions multiples » apparaissent. En C++, si nous définissons la même variable, fonction ou classe dans différents fichiers, le problème des « définitions multiples » se posera.

Alors, que devons-nous faire si cela se produit dans notre programme ? Habituellement, il existe deux solutions.

La première méthode consiste à utiliser un "fichier d'en-tête", c'est-à-dire à écrire le contenu de la définition dans un fichier séparé, puis à référencer ce fichier via la directive #include dans les fichiers requis. De cette façon, le fichier d'en-tête ne doit être référencé qu'une seule fois dans chaque fichier pour éviter le problème des « définitions multiples ».

En prenant une fonction comme exemple, nous pouvons définir le prototype de la fonction dans un fichier d'en-tête, puis référencer ce fichier d'en-tête via la directive #include dans les fichiers requis. Par exemple, nous pouvons définir la fonction "int add(int a, int b);" dans le fichier d'en-tête "function.h", puis référencer ce fichier d'en-tête dans le fichier requis par #include "function.h", dans le fichier Appelez simplement la fonction "add(a, b)".

Exemple de code :

function.h:

#ifndef FUNCTION_H
#define FUNCTION_H

int add(int a, int b);

#endif

function.cpp:

#include "function.h"

int add(int a, int b)
{
    return a + b;
}

main.cpp:

#include <iostream>
#include "function.h"

int main()
{
    int a = 3, b = 5;
    std::cout << add(a, b) << std::endl;
    return 0;
}

Dans le cas de l'utilisation de "header file", le fichier d'en-tête ne doit être référencé qu'une seule fois dans chaque fichier . Vous pouvez utiliser la fonction "add(a, b)" dans le programme pour éviter le problème des "définitions multiples".

La deuxième méthode consiste à utiliser "namespace". Grâce aux espaces de noms, nous pouvons spécifier différents noms pour différentes variables, fonctions ou classes afin d'éviter le problème des « définitions multiples » provoqué par des définitions portant le même nom.

Exemple de code :

namespace FirstNamespace {
    int value = 1;
}
 
namespace SecondNamespace {
    int value = 2;
}
 
int main()
{
    std::cout << FirstNamespace::value << std::endl;
    std::cout << SecondNamespace::value << std::endl;
    return 0;
}

Dans le code ci-dessus, nous avons défini la variable "value" avec le même nom dans les espaces de noms "FirstNamespace" et "SecondNamespace" respectivement. Lors de l'utilisation, nous distinguons différentes variables via des espaces de noms. De cette façon, même si des variables portant le même nom sont définies dans des fichiers différents, le problème des « définitions multiples » peut être évité grâce aux espaces de noms.

En résumé, lorsque « plusieurs définitions » apparaissent dans le programme, nous pouvons utiliser des « fichiers d'en-tête » ou des « espaces de noms » pour résoudre ce problème. Nous devons choisir la méthode appropriée en fonction de la situation spécifique et veiller à éviter les définitions portant le même nom dans le programme.

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