Go Down

Topic: qu'est-ce qu'un namespace ? (Read 440 times) previous topic - next topic

Jean24816

Bonjour à tous,


J'aimerais savoir quel est ce type de .... classe?

Code: [Select]
namespace fs
{

class SDFS : public FS
{
protected:
    uint8_t _pdrv;

............




What is public FS?

Qu'est-ce que   public FS?


Merci


JPDaviau

hbachetti

La classe SDFS hérite des méthodes et propriétés de la classe FS, dont open(), exists(), rename(), etc.

Il serait bien de lire un tuto sur l'héritage.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

J-M-L

#2
Dec 09, 2019, 11:24 am Last Edit: Dec 09, 2019, 12:48 pm by J-M-L
Les namespaces ne sont pas uniquement liés aux classes. c'est plus général.

Imaginez cela comme un nom de ville par exemple. Si vous donnez rendez vous à quelqu'un au "13 rue du marché" ça ne va pas être simple pour savoir où aller en France; Mais si vous dites "13 rue du marché à Antony" ou "13 rue du marché Avallon" ou "13 rue du marché Saint Nazaire" alors vous levez l'ambiguïté.

En informatique c'est un peu pareil, Si 2 développeurs définissent des fonctions avec le même nom, il y aurait une incertitude lors de l'appel à une de ces fonctions dans un programme. Le programme ne saurait pas où aller.

Un namespace ("espace de nom" ou référentiel lexical) est une zone de déclaration d'identificateurs permettant au compilateur de résoudre cette incertitude, on ajoute un niveau supplémentaire aux identificateurs.

par exemple essayez ce code:
Code: [Select]
namespace Antony {
void bonjour() // première fonction bonjour()
{
  Serial.println(F("Bonjour depuis Antony"));
}
}

namespace Avallon {
void bonjour() // deuxième fonction bonjour()
{
  Serial.println(F("Bonjour depuis Avallon"));
}
}

namespace SaintNazaire {
void bonjour() // troisième fonction bonjour()
{
  Serial.println(F("Bonjour depuis Saint Nazaire"));
}
}

void setup()
{
  Serial.begin(115200);
  Antony::bonjour(); // appelle la première
  Avallon::bonjour(); // appelle la deuxième
  SaintNazaire::bonjour(); // appelle la troisième
}

void loop() {}

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

68tjs

1) Merci à Jean24816 d'avoir posé la question
2) Merci à JML pour sa réponse claire comme d'habitude.

J-M-L

2) Merci à JML pour sa réponse claire comme d'habitude.
de rien

à noter que vous n'êtes pas obligé de rajouter le nom du namespace avec les :: devant le nom de la fonction si vous avez précisé au compilateur un seul namespace pour lever l'ambiguïté

Code: [Select]
namespace Antony {
void bonjour() // première fonction bonjour()
{
  Serial.println(F("Bonjour depuis Antony"));
}
}

namespace Avallon {
void bonjour() // deuxième fonction bonjour()
{
  Serial.println(F("Bonjour depuis Avallon"));
}
}

namespace SaintNazaire {
void bonjour() // troisième fonction bonjour()
{
  Serial.println(F("Bonjour depuis Saint Nazaire"));
}
}


void setup()
{
  Serial.begin(115200);

  { // bloc restreignant l'espace de nom à Antony
    using namespace Antony;
    bonjour();// appelle la première
  }

  { // bloc restreignant l'espace de nom à Avallon
    using namespace Avallon;
    bonjour();// appelle la deuxième
  }
 
  { // bloc restreignant l'espace de nom à SaintNazaire
    using namespace SaintNazaire;
    bonjour();// appelle la troisième
  }
}

void loop() {}



c'est un peu comme si vous étiez déjà dans la ville et que vous disiez à quelqu'un rendez vous au "13 rue du marché", on comprend bien dans ce cas que ce n'est pas dans une autre ville grace au contexte; --> c'est ce à quoi sert le using namespace

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

hbachetti

Quote
Les namespaces ne sont pas uniquement liés aux classes. c'est plus général.
Bien entendu, mais j'hésitais entre répondre à la question du titre ou répondre à la question dans le texte plus bas ...

Quote
Qu'est-ce que   public FS?
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

J-M-L

ah oui - les questions dans le titre et le corps étaient différentes :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

hbachetti

Pas grave. Deux questions -> deux réponses.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up