Namespace

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 17 août 2004 à 08:35
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 18 août 2004 à 08:53
j'ai modifié mes classes n'étant jamais instanciées en namespace
et j'ai quelques intérogations :

1>
dans le header, pkoi le static ne passe pas
ex : static void afficheErreurWinExec(const unsigned int retour_WinExec);

soluce : void afficheErreurWinExec(const unsigned int retour_WinExec);

2>
pkoi ds le source,
lorsqu'on défini le namespace
2 modes d'ecriture ont l'aire possible

void BVisuel::afficheErreurWinExec(const unsigned int retour_WinExec)
{
..
}
et

void afficheErreurWinExec(const unsigned int retour_WinExec)
{
..
}

Dans, le 1er cas je ne comprends pas trop...

3>
En utilisant VC6 (non testé ailleur)
ces fonctions ne sont plus visibles dans le ClassViewer, comment résoudre ce probleme?

rq: ces fonctions ce trouvent dans ma source BVisuel deja produite & utilisées dans mes sources...

Merci
++

Magic Nono: l'informagicien!

12 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 08:52
a si, pr la qu 3, en utilisant la 2e meth de la question 2,
tt apparait ds globals
(invisible sinon...)

alors
4>
quel est l'intéret des namespace ???
le code semble encore moins organisé !

++
Magic Nono: l'informagicien!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 10:32
J'ai pas trop compris ce qui était résolut et ce qui ne l'était pas.
Les namespace servent a rassembler des fonctions qui ont un rapport entre elles et qui forment un tout. Si tu ne mets pas de BVisuel:: devant ta fonction, elles sont dans le namespace global, sinon c'est dans BVisuel, mais tu peux faire les deux.
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 10:45
vecchio > merci pr ta réponse, rien de résolu
le 2e post est un constat et une 4e question

je vais spécifier ici le source :

namespace BVisuel
{
void BVisuel::afficheErreurWinExec(const unsigned int retour_WinExec)
{
..
}

void afficheErreurWinExec2(const unsigned int retour_WinExec)
{
..
}

};


afficheErreurWinExec n'apparait po ds le classwizard, d'ailleur, le namespace pourrait apparaitre comme une classe ou une structure, ce serait pratique....

afficheErreurWinExec2 apparait lui dans le namespace global alors qu'il se trouve bien dans le namespace BVisuel

ptet que C une erreur d'analyse de Visual alors....
avec toutes ses dérogations aux normes, ça ne serait mm plus étonnant.

voila le constat et l'intérrogation
++

Magic Nono: l'informagicien!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 11:24
En général on ne met dans le nemaspace que les déclarations; les définitions se font en dehors:

namespace BVisuel // Pas de définition, ni de BVisuel:: ici
{
void afficheErreurWinExec(const unsigned int retour_WinExec);
}

// GLOBAL
void afficheErreurWinExec2(const unsigned int retour_WinExec)
{
..
}

// BVisuel
void BVisuel::afficheErreurWinExec(const unsigned int retour_WinExec)
{
..
}

Et la plus de problème dans l'Affichage des classes de vs.
C'est juste une méthode pour séparer l'interface et l'implémentation comme tu le ferais avec une classe, tu n'avais pas tout défini dans le bloc class je suppose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 11:36
OK

(avec VC6 en tt cas)
cela fonctionne sans specifier le namespace ds le .cpp
ssi on spécifie BVisuel::

sinon, il semble nécessaire de définir le namespace au sein du cpp

je avais mis car je l'avais dans les classes sur lesquelles je travaille (Imaging Sources, utilisation de caméras 1394)

et effectivement, le pb viens de VS qui n'affiche ni les namesapces ni leur intérieur (je trouve cela perturbant et bête)
comme je trouve embettant d'avoir un simulacre de namespace global contenant toute les méthodes en utilisant la seconde solution

autrement, sans mettre le namespace dans le cpp on obtient l'erreur suivante:

msgBoxAmodale.obj : error LNK2001: unresolved external symbol "void __cdecl BVisuel::afficheErreurWinExec(unsigned int)" (?afficheErreurWinExec@BVisuel@@YAXI@Z)
Docum.obj : error LNK2001: unresolved external symbol "void __cdecl BVisuel::afficheErreurWinExec(unsigned int)" (?afficheErreurWinExec@BVisuel@@YAXI@Z)
Debug/MetaProg.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.


Magic Nono: l'informagicien!
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 15:35
bon...

djl > ça y é, G englobé ttes mes bibli ds un namespace

mais comme j'apprécie avoir des noms courts et comme j'utilise

BVisuel, BString, BListeIndir.... à tt bout de champ,
au lieu de tout reprendre, j'ai inclu ds le stdafx

using namespace BIBLI_BC;

ceci dit il ne connaissait pas, alors du coup le stdafx comporte ces lignes en plus:

namespace BIBLI_BC{};
using namespace BIBLI_BC;


C mieu, car tt est englobé, mais l'un dans l'autre, ça ne change po grd chose :-p

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 août 2004 à 16:39
c'est toi qui vois

faut pas voir un namespace comme une classe statique, c'est juste un espace protegeant les noms qui s'y trouvent, pour eviter les collisions...

pour moi les namespaces sont tres pratiques pour les gros projets
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 16:48
ui,

d'ou l'utilité de bien choisir ses noms & la présence du franglais qui t'a surpris ds mes srces...

++
Magic Nono: l'informagicien! 8-)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
17 août 2004 à 18:04
arg, il me tue ce Visual !!!!

certes, C ptet po simple, mé vu que G pu acces aux info depuis le classView, je veux y aller par le clic droit - recherche de l'emplacement ou C définit (le header, en tte logique)

namespace BIBLI_BC
{
namespace BVisuel
{
...
};
};

et il ose me dire que BVisuel est inconu !
je crois que pour ce cas, G po compris les namespace....

je laisse le BIBLI_BC
mé BVisuel va se retransformer en classe n'ayant que des méthodes statiques, ça va arréter de me gonfler !!!

++
Nono.

PS qqn pe me dire si ce pb(?) a été résolu sous VC7 ?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 août 2004 à 19:09
ben vu comme ca, BVisuel n'existe pas, je vois que BIBLI_BC::BVisuel
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
18 août 2004 à 08:42
ben il faudra l'expliquer au wizard alors
car ça m'a mis le wiiii dans tous VC6

C la merdoum complete, certes, il repere BVisuel mais pas BIBLI_BC::BVisuel et du coup plus aucun outil d'exploration ne fonctionne !!!!
[référence, appel ...] => no brows informations... cool !!!

je vais finir par croire que les namespace sont une bonne théorie mais que leur pratique avec VC6 est à déconseiller.
si vous savez comment faire pour que ces outils soient utilisable qd mm, je suis preneur.

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 08:53
lol, mais je t'avais deja dit que vc6 est tres loin du standard, la stl, les templates et les namespaces ca marche qu'a moitié

tu devras faire avec
0
Rejoignez-nous