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.
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:
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
Post a Comment