Warum benötigt eine Library interne Variablenübergaben?


hallo,

die variable "value" ist privat und bekannt.
jetzt wird von außen der wert der variablen _value zur privaten variablen value übergeben.
danach soll eine private funktion aufgerufen werden die mit dieser privaten variable arbeitet.
calculate_pulsweite(value);
lasse ich die variablenübergabe und -eingabe weg, dann gehts nicht, compiler meckert.

calculate_pulsweite();
void lokomotive::calculate_pulsweite()  {

im header natürlich auch korrigiert.

warum geht das nicht ohne variablenübergabe? value ist doch intern gesehen überall bekannt.

code: [select]

// deklaration der klasse
// lokomotive_v2.h

#ifndef lokomotive_v2_h
#define lokomotive_v2_h

#include <arduino.h>

class lokomotive  { // klassenname "lokomotive"

  public: // von außen zugängliche elemente ...
    lokomotive (float, float, int); // funktion deklarieren
void setvalue(int);   
void setkmh(int);

// getter-methoden im header für
    int getpulsweite() { return pulsweite; } // rückgabewert, autom. inline methode   
    int getindexkmh() { return index_kmh; }  // rückgabewert, autom. inline methode   
     

  private:                 // nur intern zugängliche elemente ...   
void calculate_pulsweite(int); // neu berechnen
int index_kmh;         
int value;             
int pulsweite;
float steigung;
float offset;
int minindex;
};

#endif


code: [select]
// definition der klasse
// lokomotive_v2.cpp

#include "lokomotive_v2.h"


// konstruktor ::
lokomotive::lokomotive (float _steigung, float _offset, int _minindex):
  steigung (_steigung),
  offset (_offset),
  minindex (_minindex)
  { }
 
 
// ab hier scopes/bereichsoperator ::

void lokomotive::setkmh(int _kmh)
{
  index_kmh = steigung * _kmh + offset + 0.5;
}


void lokomotive::setvalue(int _value) // index 0...512 Übergabe
{   
  value = _value;
  if (value > 1 && value < minindex) {
value = minindex; 
  }
  calculate_pulsweite(value);
}

 
void lokomotive::calculate_pulsweite(int value)  {
 
  // ****** mappen ******
  if (value < 513) {
    pulsweite = value * 2;                  // für tastgradberechnung
  }
  else {
pulsweite = 0; 
  } 
 
  // ****** überprüfen - grenzwerte einhalten *****
  if (pulsweite < 0)     pulsweite = 0;     
  if (pulsweite > 1023)  pulsweite = 1023;
   
}

so ganz verstehe ich deine frage nicht....

abweichend von deinem stil deklariere ich erst die privaten dinge und dann die öffentlichen.
ob das notwendig ist... ka...


zurechtgeschnippselt:
code: [select]
  private:                 // nur intern zugängliche elemente ...   
void calculate_pulsweite(); // neu berechnen




code: [select]

void lokomotive::setvalue(int _value) // index 0...512 Übergabe
{   
  value = _value;
  if (value > 1 && value < minindex) {
value = minindex; 
  }
  calculate_pulsweite();
}

void lokomotive::calculate_pulsweite()  {
 
  // ****** mappen ******
  if (value < 513) {
    pulsweite = value * 2;                  // für tastgradberechnung
  }
  else {
pulsweite = 0; 
  } 
 
  // ****** überprüfen - grenzwerte einhalten *****
  if (pulsweite < 0)     pulsweite = 0;     
  if (pulsweite > 1023)  pulsweite = 1023;
   
}


Arduino Forum > International > Deutsch (Moderator: uwefed) > Warum benötigt eine Library interne Variablenübergaben?


arduino

Comments

Popular posts from this blog

Error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode - Raspberry Pi Forums

class MPU6050 has no member named begin

missing filename after '-o'