Class Dependency Injection?? "cannot call constructor directly"
-
Hallo zusammen,
Ich habe mir eine Klasse für mein Arduino programmiert wo ich auf eine weitere bestehend Klasse zugreifen will.
Wenn ich das so programmiere wie unten bekomme ich die Fehlermeldung "cannot call constructor directly"
Ich habe auch den Tipp bekommen das ganze mit "Constuctor Injection, oder per Setter Injektion" zu implementieren was aber das verstehe ich nicht.
Kann mir jemand weiterhelfen?Actor.h
#include "NewRemoteTransmitter.h" class Actor { private: unsigned long id; int unit; bool state; public: Actor(unsigned long i, int u); void toggle() { const int pin = 11; const unsigned int delay = 260; const byte repeat = 3; if ( !state ) { state = true; NewRemoteTransmitter::NewRemoteTransmitter(id, pin, delay, repeat).sendUnit(unit, 1); } else { state = false; NewRemoteTransmitter::NewRemoteTransmitter(id, pin, delay, repeat).sendUnit(unit, 0); } } };
Actor.cpp
#include "Actor.h" Actor::Actor(unsigned long i, int u = 0) { id = i; unit = u; state = false; }
Sketch
#include <Arduino.h> Actor Living1(7402746, 0); void loop() { Living1.toggle(); Living1.toggle(); }
Grüsse
Marc
-
Das ist mein Beitrag, da ist wohl was falsch mit der Anmeldung gelaufen
-
NewRemoteTransmitter::NewRemoteTransmitter
benennt den Konstruktor vonNewRemoteTransmitter
, was nach [class.qual]/1 in diesem Kontext ill-formed ist. Schreib einfachNewRemoteTransmitter(id, pin, delay, repeat).sendUnit(unit, 1);
-
Vielen Dank, das wars schon, der Compiler ist ohne Fehlermeldung durchgelaufen.
Manchmal studiert man viel zu viel und sieht die einfachste Lösung nichtDanke!