C++ .. gibt es sowas wie parent?

5 Antworten

btnShift:: würde lediglich bei Vererbung funktionieren, Du könntest aber eien Referenz auf Dein btnshift (warum instanziierst Du es global?) übergeben und diese Referenz nutzen.

16

ja das mit der referenz habe ich schonmal gehört, das kam mir auch in den sinn. wie würde ich das machen? ich suche mir einen ab, aber nix klappt.

"warum instanziierst Du es global?"
ich code für den Teensy, ich kenne das nur so, dass es da eine main.cpp bzw. .ino gibt. da läuft ja das hauptprogramm ab. da btnShift überall gebraucht wird, d.h. jede klasse darauf zugriff haben muss, habe ich es da oben global (dachte ich) hingesetzt.

0
37
@Mixos

Du übergibst die Reference bei jedem Aufruf in der Form: bounce& varname

wobei bounce der Typ und varname die in der Methode verfügbare Referenz. Alternativ kannst Du auch einen Pointer nehmen, insbesondere wenn Du ihn als Member der 'Kindklasse' nutzen möchtest.

Siehe auch:

https://en.wikipedia.org/wiki/Reference_(C%2B%2B)

Für einen Abriss über Referenzen.

0

Ich weiß nicht, ob das gehen würde (es geht definitiv nicht ohne irgendwelche nasty Workarounds), es wäre aber auch extrem schlechter Stil und daher nicht erstrebenswert.

Was willst Du damit denn erreichen? Meinst Du nicht, dass etwas Grundlagen C++ für den Anfang erstmal sinnvoller wären?

16

würde ich gern, und werde ich auch nochmal nachholen alles, aber momentan bleibt neben frau, kind, job einfach keine zeit für meine projekte :/

was ich erreichen will ist einfach aus eine klasse heraus andere variablen ansprechen oder auch funktionen anderer klassen.

0
30
@Mixos

Dann mach für die Klasse einen extra Header und inkludier diese in jede Datei, wo du sie brauchst

0

Gib das "btnShift" als Parameter an "pollShift" weiter:

void utils::pollShift(Bounce& btnShift) {…

Im Aufruf heißt es dann

utils.pollShift(btnShift); 

Über die Sinnhaftigkeit des ganzen lasse ich mich mal nicht aus - z.B. sollte sich Utils am Anfang per "cfg" konfigurieren und nicht die globale Variable verwenden.

16

wie meinst n das mit "Utils am Anfang per "cfg" konfigurieren"? .. bin ein totaler noob was c++ angeht, nehme jeden ratschlag gern an.

0
45
@Mixos

zum Beispiel

utils(const cfg& cfg) // Konstruktor
…
main()
{
   cfg cfg{};
   auto  btnShift = Bounce(4, 10);
   utils utils{cfg};
   utils.pollShift(btnShift);
}

Du solltest auch bei eigenen Projekten eine gewisse Mindest-Namenskonvention einhalten:

Klassennamen an Anfang groß, Variablen am Anfang klein. Keine Abkürzungen verwenden, moderne Entwicklungsumgebungen bieten Code-Vervollständigung, die so etwas überflüssig macht.

0

Arduino Schrittmotor?

Hallo! Ich bin gerade an meinem Projekt automatische Hüherklappe.

Ich habe mir dafür ein Arduino Set besorgt. Der Fotowiderstand soll am Ende dem Schrittmotor sagen, wann er die Tür zu machen soll. Ich bin jetzt schon so weit, dass es wenn es dunkel wird der Schrittmotor sich anfängt zu drehen und anders herum wenn es hell wird. Mein Problem ist aber, dass der Motor nicht mehr aufhören möchte sich zu drehen. Er soll also nach einer bestimmten Anzahl an Drehugen stehen bleiben und dann am Abend sich wieder in die andere Richtung drehen, quasi wenn der Wert des Fotowiderstandes wieder unterschritten wird. Solagnge soll der Motor still stehen.

Hier ist mein Quelltext:

int eingang= A0;

int LED = 10;

int sensorWert = 0;

#include <Stepper.h>

int SPU = 2048;

Stepper Motor(SPU, 3,5,4,6);

void setup()

{

Serial.begin(9600);

pinMode (LED, OUTPUT);

Motor.setSpeed(10);

}

void loop()

{

sensorWert =analogRead(eingang);

Serial.print("Sensorwert = " );

Serial.println(sensorWert);

if (sensorWert > 400 )

{

digitalWrite(LED, HIGH);

Motor.step(2048);

}

else

{

digitalWrite(LED, LOW);

Motor.step(-2048);

}

delay (50);

}

...zur Frage

Kann man diesen Arduino-Sketch noch kürzen?

Mir fehlen genau 101 Bytes von den globalen Variablen... Kann man diesen Sketch eventuell kürzen? Ich hoffe ihr könnt mir helfen

#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>

modbusDevice led;
modbusSlave slave;

void setup() {
  led.setId(3); //Slave Adresse
  led.add(1); //Digital read&write
  led.add(2);
  led.add(3);
  led.add(4);
  led.add(5);
  led.add(6);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
  
  slave._device = &led;  
  slave.setBaud(9600);
}

void loop() {
  if(digitalRead(3) == HIGH){
    led.set(1, 1);
  }
  if(digitalRead(4) == HIGH){
    led.set(2, 1);
  }
  if(digitalRead(5) == HIGH){
    led.set(3, 1);
  }
  if(digitalRead(6) == HIGH){
    led.set(4, 1);
  }
  if(digitalRead(7) == HIGH){
    led.set(5, 1);
  }
  if(digitalRead(8) == HIGH){
    led.set(6, 1);
  }
    if(digitalRead(3) != HIGH){
    led.set(1, 0);
  }
  if(digitalRead(4) != HIGH){
    led.set(2, 0);
  }
  if(digitalRead(5) != HIGH){
    led.set(3, 0);
  }
  if(digitalRead(6) != HIGH){
    led.set(4, 0);
  }
  if(digitalRead(7) != HIGH){
    led.set(5, 0);
  }
  if(digitalRead(8) != HIGH){
    led.set(6, 0);
  }
  slave.run();
}
...zur Frage

C#, Linke Maustaste abfragen?

Guten Tag,

In meinem Programm frage ich ab, ob die linke Maustaste gedrückt wird:

bool linkeMaustasteGedrückt = (Control.MouseButtons & MouseButtons.Left) == MouseButtons.Left;

        private void getHotkey_Tick(object sender, EventArgs e)
        {
            if (linkeMaustasteGedrückt == true)
            {
                if (hotkey_textBox.BackColor == Color.Green)
                {
                    hotkey_textBox.BackColor = Color.DarkGreen;
                }
                else
                {
                    hotkey_textBox.BackColor = Color.Red;
                }
            }
        }

Was ist denn an dem Code falsch? Habe den im Internet gefunden.

Ist das "== true" bei der if-Abfrage nötig?

...zur Frage

Arduino Keyboard Lib Geht nicht (Arduino Mega)?

Hallo,

Ich habe mir ein Arduino gekauft. Und ich wollte machen, das wenn ich einen Taster drücke das mein PC die Taste H drückt. Aber der Arduino gibt ein Fehler aus, und ich finde ihn nicht. Ich habe das richtige Board und alles ausgewählt. Das Board wird auch vom meinem Rechner erkannt.

#include <Keyboard.h>

int Knopf = 52;

void setup() {
  pinMode(Knopf, INPUT_PULLUP);
  Serial.begin(9600);
  Keyboard.begin();
}

void loop() {
   
   
   if(digitalRead(Knopf)==HIGH){
     Serial.println("Pressed Key H");
     Keyboard.press('h');
     delay(1000);
   }


}

Error:

Arduino: 1.6.11 (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Users\Dennis1\Documents\Arduino\Test\Test.ino:1:0:

C:\Program Files (x86)\Arduino\libraries\Keyboard\src/Keyboard.h:29:2: warning: #warning "Using legacy HID core (non pluggable)" [-Wcpp]

 #warning "Using legacy HID core (non pluggable)"

  ^

C:\Users\Dennis1\Documents\Arduino\Test\Test.ino: In function 'void setup()':

Test:8: error: 'Keyboard' nicht gefunden. Beinhaltet Ihr Sketch die Zeile '#include <Keyboard.h>'?
   Keyboard.begin();

   ^

C:\Users\Dennis1\Documents\Arduino\Test\Test.ino: In function 'void loop()':

Test:16: error: 'Keyboard' nicht gefunden. Beinhaltet Ihr Sketch die Zeile '#include <Keyboard.h>'?
      Keyboard.press('h');

      ^

exit status 1
'Keyboard' nicht gefunden. Beinhaltet Ihr Sketch die Zeile '#include <Keyboard.h>'?

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
    
...zur Frage

ARDUINO FUNDUINO SKETCH IR-Empfänger

Moin Moin,

ich habe gerade versucht meinen SKETCH auf mein Funduino hochzuladen aber er sendet mir immer die meldung das etwas nicht möglich ist was ich aber nicht versteh, unter der SKETCH mit Fehlermeldung:

include

include

int receiverpin = 11;

include

IRrecv irrecv(receiverpin); decode_results results;

void setup() { Serial.begin(9600); irrecv.enableIRNIn(); } void loop() { if (irrecv.decode(&results)) { Seril.print(results.value, HEX);

Serial.print(" ");
irrecv.resume();

} }

This report would have more information with "Show verbose output during compilation" enabled in File > Preferences. Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno" sketch_feb11a.ino: In function 'void setup()':

sketch_feb11a:10: error: 'class IRrecv' has no member named 'enableIRNIn'

sketch_feb11a.ino: In function 'void loop()':

sketch_feb11a:16: error: 'Seril' was not declared in this scope

...zur Frage

Warum schießt nur einer der Zauberer in meinem Unity Spiel?

Ich hab ein Script geschrieben dass meinen Zauberer alle 3 Sekunden eine Kugel schießen lässt:

{
  static bool shoot;

  Vector2 bulletPos;

  public GameObject zaubererBullet;

  private static IEnumerator BulletShoot()
  {
    while (true)
    {
      yield return new WaitForSeconds(3.0f);
      shoot = true;
    }
  }

  private void Start()
  {
    StartCoroutine(BulletShoot());
  }

  private void Update()
  {
    bulletPos = transform.position;

    if (shoot == true)
    {
      bulletPos += new Vector2(-1f, -1f);
      Instantiate(zaubererBullet, bulletPos, Quaternion.identity);
      shoot = false;
    }
  }
}

Auf der Kugel ist dieses Script:

{
  public float speed = 5f;

  float velY = 0f;

  Rigidbody2D rb;

  private void OnTriggerEnter2D(Collider2D collision)
  {
    if (collision.CompareTag("Player"))
    {
      RedScreenScript.dead = true;
    }
  }

  void Start ()
  {
    rb = GetComponent<Rigidbody2D>();
  }

  void Update ()
  {
    rb.velocity = new Vector2(speed, velY);
    Destroy(gameObject, 5f);
  }
}

Wenn ich jetzt mehrere Zauberer in meiner Scene habe, schießt immer nur einer und die anderen machen nichts. Warum?

...zur Frage

Was möchtest Du wissen?