verwendet Ihr this->... ?

Guten Tag zusammen,

beim Durchstoebern einiger Bibliotheken fuer den Arduino kam mir des Oefteren
der Objekt/Element Zugriff mittels "this Zeigers" in die Quere.
Daher eine allgemeine Frage an Euch:
Verwendet Ihr bei einem "simplen" Zugriff auf ein Element eines Objekts "this->"?

class Test_class {
  private:
  int int_bla;  
public:
  int get_bla()...; //angepasst an mit this/ohne this
};
//ohne this
int Test_class::get_bla() const {
  return int_bla;
}
//mit this
int Test_class::get_bla() const {
  return this->int_bla;
}

Ausfuehrliches Bsp:

class test_class
{
  private:
    static const int con_int = 21;
    static constexpr float con_float = 1.23;
    int bla_int;
    float bla_float;
  public:
    void begin(const int set_i, const float set_f);
    int get_con_int();
    float get_con_float();
    int get_int();
    float get_float();
};
//Konstruktoren
void test_class::begin(const int set_i, const float set_f)
{
  bla_int = set_i;
  //this->bla_int = set_i;
  this->bla_float = set_f;
}
int test_class::get_con_int()
{
  return this->con_int;
}
float test_class::get_con_float()
{
  return con_float;
  //return this->con_float;
}
int test_class::get_int()
{
  return this->bla_int;
}
float test_class::get_float()
{
  return this->bla_float;
}

//Objekt(e)
test_class test_obj;

void setup()
{
  Serial.begin(19200);  while (!Serial) {}
  test_obj.begin(31, 2.34);
  Serial.print(F("get_con_int()\t"));    Serial.println(test_obj.get_con_int());
  Serial.print(F("get_con_float()\t"));  Serial.println(test_obj.get_con_float());
  Serial.print(F("get_int()\t"));        Serial.println(test_obj.get_int());
  Serial.print(F("get_float()\t"));      Serial.println(test_obj.get_float());
}

void loop() {}

schoenes WE
grillgemuese :slight_smile:

Das macht in Libraries durchaus Sinn.
Solltest Du diese einbinden und zufällig in dem Sketch eine Variable con_int nennen, hättest Du ein Problem.
In der Library weiß die Methode nun aber, dass sie die Variable aus dem eigenen Stack verwenden muss und nicht die globale.

Da ich viel im .Net Bereich machen, ist man ständig mit this unterwegs gewesen. Mittlerweile hat sich das allerdings geändert, da eine saubere Programmierung und eine vernünftige Benennung der Variablen das in den allermeisten Fällen überflüssig macht. Die IDE meckert das mittlerweile an, sofern nicht unbedingt notwendig.

Verwendet Ihr bei einem "simplen" Zugriff auf ein Element eines Objekts "this->"?

Natürlich!
this verwende ich recht häufig....
z.B. zu Methodenverkettung.
und den -> Operator auch.

Auch du verwendet this vermutlich recht häufig!
Zwar implizit, aber dennoch häufig.


Aber so, wie du es in den Beispielen tust, so nicht....

Verwendet Ihr bei einem "simplen" Zugriff auf ein Element eines Objekts "this->"?

Explizit? Sehr selten, nur wenn nötig.
Implizit? Ja, sehr sehr häufig.

Ich verwende die Schreibweise this-> nur wenn das entsprechende Symbol nicht 'ohne' zu erreichen ist.

Zunächst würde ich versuchen dem Objekt, das mir mein Symbol überdeckt, einen anderen Namen zu geben.

Whandall:
Ich verwende die Schreibweise this-> nur wenn das entsprechende Symbol nicht 'ohne' zu erreichen ist.

Was eigentlich extrem selten der Fall sein sollte.
Ich zeihe immer Schreibweisen der Arduino-Reference vor. Mein Code sollen auch Anfänger lesen können.