Salut,
Je pense avoir compris tout ça.
Quelques dernière questions tant qu'on y est :p.
Pourquoi y a t'il un "&", est ce simplement une convention comme le "_" pour le private?
Parce que le code fonctionne avec ou sans.
Maintenant, j'ai voulu faire un peu plus fort :).
J'ai importé une librairie de type OneWire. ( constructeur : Onewire myWire ( int pin ) )
Je veux donc à partir de la class NomDeLaClass prendre un type int et créé un objet OneWire.
Pour cela j'utiliserais une fonction setSensor(const OneWire capteur) comme tu l'as fait.
J'ai donc :
#ifndef NOM_DE_LA_CLASS_HEADER
#define NOM_DE_LA_CLASS_HEADER //Evite les inclusions multiples
#include <OneWire.h>
#include "Arduino.h"
class NomDeLaClass
{
private:
String _name;
OneWire _wire();
//Méthodes et variables privées
public:
NomDeLaClass(int pin);
void setName(String newName); // j'ai essayé ton truc
void setSensor ( const OneWire capteur); // je veux faire de même avec une autre classe
//Constructeur de la class
//Méthodes et variables public
};
#endif
et :
#include "NomDeLaClass.h"
#include <OneWire.h>
NomDeLaClass::NomDeLaClass(int pin )
{
}
void NomDeLaClass :: setName(String newName)
{
_name = newName;
}
void NomDeLaClass :: setSensor(const OneWire capteur)
{
_wire = capteur; // je veux donc que wire fait référence au capteur.
}
En somme quand je fais _wire.uneMethod, cela reviens au même que capteur.uneMethod
Mais cela me permettra de jouer avec autant de capteur que je veux tant que je créé un objet différent.
Malheureusement je reçois une erreur :
NomDeLaClass.cpp: In member function 'void NomDeLaClass::setSensor(OneWire)':
NomDeLaClass.cpp:14: error: invalid use of member (did you forget the '&' ?)
Et j'avoue, je ne l'a comprend pas. D'après moi, le "&" n'est donc pas une convention ... pourtant je n'ai rien trouvé de convaincant sur internet
En regardant sur internet, j'ai vu que que certains exemples sont donné avec int &x=3 et qu'ils disent faire référence à une variable x. Donc le "&" signifie quelque chose .... mais quoi :s
Un exemple que j'ai lu :
It means you're passing the variable by reference.
In fact, in a declaration of a type, it means reference, just like:
int x = 42;
int& y = x; // mais ca revient strictement au même que de faire int y = x ... non?
declares a reference to x, called y.
Et la toute dernière chose, le const
J'ai lu que le const servait à ne pas modifié l'objet.
Ok, quand on fait un setName, je modifie ce qu'il y a dans le String _name, et donc l'objet?
Et ce n'est pas le but ?
class MaClasse
{
private:
String _name;
public:
String getName() { return _name; }
void setName(const String &newName) { _name = newName; }// on modifie le name de l'objet ?
};
J'ai vraiment besoin d'éclaircissement ...
Merci !