Débutant C++ - Intéractions d'objets de même nom - C++ - Programmation
Marsh Posté le 12-04-2005 à 10:19:08
Sve@r a écrit : Bonjour à tous |
Oulà qu'est ce que tu appelles objet de meme nom ???
C'est le nom de la variable qui est identiqueou "le type" :
Code :
|
Dans ce cas, oui, il ne peuty avaoir qu'une seule déclaration de la classe MonObjet. En effet si tu fais après
Code :
|
Les méthodes de l'objet MonObjet s'applique à mon_tit_objet_a_moi et à mon_tit_objet_aussi_a_moi (c'est une totologie)
Snon, tu peux préciser ta question
Marsh Posté le 12-04-2005 à 11:25:40
C'est pour ça qu'existe namespace
Met ton objet dans un namespace anonyme et voila
avec l'ex précédent :
Code :
|
Marsh Posté le 12-04-2005 à 11:31:49
LordHarryPotter a écrit : Oulà qu'est ce que tu appelles objet de meme nom ??? |
C'est le type
En fait, j'ai un source "a.cpp" contenant le code suivant
class truc { |
Puis j'ai un source "b.cpp"
class truc { |
Puis le main dans un fichier "pgm.cpp" qui englobe tout ça
void Fa(void); |
Compilation
g++ -c pgm.cpp =>ok
g++ -c a.cpp =>ok
g++ -c b.cpp =>ok
g++ a.o b.o pgm.o -o pgm => erreur => truc::affich() déjà défini
Donc, comme je l'ai dit, je pensais que la classe "truc" du fichier "a.cpp" n'était connue que dans le fichier "a.cpp" et n'entrerait pas en intéraction avec la classe "truc" du fichier "b.cpp".
Où me suis-je trompé ? Dois-je utiliser des classes de noms tous différents ?
Marsh Posté le 12-04-2005 à 11:33:17
Tarabiscote a écrit : C'est pour ça qu'existe namespace
|
Ouah ! Je connaissais pas ! Merci
Marsh Posté le 12-04-2005 à 12:07:41
Sve@r a écrit : C'est le type
|
Les namespaces permettent d'avoir (dans des namespcaces différents) des objets de meme noms.
Bon engénéral t'as çà dans desgros projets.
Sinon dans ton main tu mets "void Fa();" tu saisà quoi serve les fichier .h ???
Les fichiers .h serve à déclarer des fonctions qui vont être définis dans de fichiers .cpp et qui peuvent être utiliser ailleurs, typiquement ta classe truc et surtout les fonctions Fa et Fb.
Sinon rien ne t'empêche d'inclure un char* dans ton objet truc ain d'éviter de redéfinir l'objet truc (dans lesdeux cas t'initialise la chaine de caractères pour qu'elle soit égale à héllo A ou héllo B)
Marsh Posté le 12-04-2005 à 12:15:39
LordHarryPotter a écrit : Les namespaces permettent d'avoir (dans des namespcaces différents) des objets de meme noms. |
Merci
LordHarryPotter a écrit : Sinon dans ton main tu mets "void Fa();" tu saisà quoi serve les fichier .h ??? |
Vivi, j'ai été prof de C et je connais le principe du header
J'ai écris cet exemple simpliste pour résumer mon problème. En fait, dans les deux sources, l'objet "truc" n'est pas le même => chaque "truc" étant spécifique à chaque source il n'est pas à mettre dans un header
LordHarryPotter a écrit : Sinon rien ne t'empêche d'inclure un char* dans ton objet truc ain d'éviter de redéfinir l'objet truc (dans lesdeux cas t'initialise la chaine de caractères pour qu'elle soit égale à héllo A ou héllo B) |
Dans mon projet, mes objets de travail sont plus complexes. Et certains ne sont là que pour aider des fonctions précises à bosser => je vais tester le namespace
Marsh Posté le 12-04-2005 à 10:07:41
Bonjour à tous
comme je l'ai dit, je débute en C++ et j'ai un soucis soit conceptuel, soit de connaissances.
J'ai un projet en C++. Je l'ai découpé en plusieurs sources, chaque source étant dévolu à une fonction du projet.
Pour certaines fonctions, j'ai quelques trucs à faire. Je me dis que je peux utiliser un objet pour cela. Je défini donc dans le source de la fonction un objet "truc" (nom mis ici pour exemple) qui m'aidera dans l'algo du code de la fonction en question.
Le problème, c'est que j'ai mis le même nom d'objet dans plusieurs sources (avec des méthodes de même nom) et que ça plante à l'édition des liens (méthode xxx() déjà définie ailleurs).
Je pensais que l'objet défini dans un source "x" ne serait connu que dans ce source (un peu comme une fonction "static" ) mais apparemment, ce n'est pas le cas.
Donc est-ce que j'ai fait une faute de conception (par exemple on ne défini pas plusieurs objets de même nom dans un programme) ou bien il me manque quelque chose pour que mon idée réussisse ?
Merci